Index: WAeUP_SRP/base/skins/waeup_academics/getCosCombinedVoc.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_academics/getCosCombinedVoc.py	(revision 2846)
+++ 	(revision )
@@ -1,20 +1,0 @@
-##parameters=key=None
-# $Id$
-"""
-Return the combined courses as an vocabulary
-
-"""
-if key is None:
-    l = []
-    for k,v in context.portal_vocabularies.cos.items():
-        l += (k,v),
-    for k,v in context.portal_vocabularies.cos_cest.items():
-        if k:
-            l += (k,v),
-    return l
-for voc in (context.portal_vocabularies.cos,
-            context.portal_vocabularies.cos_cest):
-    title = voc.get(key,None)
-    if title is not None:
-        return title
-return "unknown course  %s" % key
Index: WAeUP_SRP/base/skins/waeup_default/mail2admin.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_default/mail2admin.py	(revision 2846)
+++ 	(revision )
@@ -1,44 +1,0 @@
-## Script (Python) "mail2admin"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=fullname=None,regno=None,email=None,probtype=None,descr=None,commt=None
-##title=
-##
-# $Id$
-
-mhost = context.MailHost
-prop = context.portal_properties
-
-d = {}
-d['fullname'] = fullname
-d['email'] = email
-d['email_from'] = prop.email_from_address
-d['regno'] = regno
-d['probtype'] = probtype
-d['descr'] = descr
-
-message = """
-From: %(fullname)s <%(email)s>
-To: %(email_from)s
-Cc: %(email)s
-Bcc: waeup@saoas.org
-Reply-To: %(email)s
-Subject: Uniben Contact
-
-Fullname: %(fullname)s
-Member ID: %(regno)s
-Problem Type: %(probtype)s
-Description: %(descr)s
-"""
-
-mhost.send(message % d)
-
-REQUEST = context.REQUEST
-RESPONSE = REQUEST.RESPONSE
-
-redirect_url = REQUEST.HTTP_REFERER
-redirect_url = '%s/?%s' % (redirect_url,'portal_status_message=Your message has been sent!')
-RESPONSE.redirect(redirect_url)
Index: WAeUP_SRP/base/skins/waeup_default/srp_anonymous_view.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_default/srp_anonymous_view.pt	(revision 2846)
+++ 	(revision )
@@ -1,103 +1,0 @@
-<metal:html>
-  <metal:body use-macro="here/main_template/macros/master">
-    <metal:main fill-slot="main">
-
-      <span tal:condition="python: getattr(context.campus.documents,'frontpage_doc',None)">
-          <div tal:define="doc python: context.campus.documents.frontpage_doc.getContent()"
-               tal:content="structure python:doc.wdrender()" />
-      </span> 
-
-      <span tal:condition="python: not getattr(context.campus.documents,'frontpage_doc',None)">
-
-      <h2>Welcome to the     
-      <br />New Student Registration Portal of the University of Benin, Nigeria</h2>
-             
-      <strong>This is the frontpage of Uniben's Student Registration Portal (SRP) which is part 
-                 of the West African e-University Project
-                 (<a href="" tal:attributes="href string:http://waeup.org">WAeUP</a>).</strong>
-      
-      <br /><br />
-      
-      <h2>Admission into Local/Part-Time Programmes 2006/2007</h2>
-      
-      <p><strong>INSTRUCTIONS FOR CHECKING SCREENING 
-                 TEST RESULTS AND ADMISSIONS</strong></p>
-      <br />
-      <ol>
-      <li>Click on 'View CEST Results' (CEST means Common Entrance Screening Test),</li> 
-      <li>enter your Application Number (No Scratch Card is required for this!),</li> 
-      <li>press the "Search" button, </li> 
-      <li>print your Result Slip.</li>
-      
-      <li>If you are admitted or if you are a <strong>Diploma or Non-Exam Programme</strong> applicant, purchase a N250-Admission-Checking and a 
-      N10500-Clearance Scratch Card from any of the following designated banks in Benin City:
-      
-      <br /><br />
-      UBA Plc, Uselu-Ugbowo Rd <br />
-      First Bank Plc, Ugbowo <br />
-      Unity Bank, Uniben <br />
-      Intercontinental Bank, Uniben <br />
-      Wema Bank, Akpakpava Road <br />
-      Zenith Bank Uselu <br /><br />
-      </li>
-      
-      <li>Click "Check Admission",</li> 
-      <li>enter your Registration Number and your Admission Checking PIN (prefix APP),</li> 
-      <li>press the "Check" button,</li> 
-      <li>print your Admission Slip,</li> 
-      <li>buy your Clearance Scratch Card,</li> 
-      <li>log in with your new Student Id (see Admission Slip)
-          and your Password (last 10 digits of your Admission Checking PIN),</li> 
-      <li>press the "Continue" button,</li> 
-      <li>check your email address and phone number,</li> 
-      <li>press the "Save & Continue" button,</li> 
-      <li>enter your Clearance PIN (prefix CLR) and</li> 
-      <li>press the "Start" button.</li> 
-      </ol>
-      <br />       
-      
-      
-      <p><strong>Notice:</strong> Clearance and Orientation for Part-Time and Diploma Students commences on 
-         resumption and ends exactly on <strong><font color="red">1st June 2007</font></strong>. 
-         Part-Time and Diploma Students must fill their 
-         Clearance/Elegibility forms online before 1st June.
-         Any breach of this directive, will result in forfeiture of the adminssion offer. 
-      </p>            
-      
-      <h2>Returning Students</h2>         
-      
-      
-      <ol>
-      <li> Simply click "Return 2006/2007", </li> 
-      <li> enter your Matriculation Number and either your firstname, middlename or lastname,</li> 
-      <li> press the "Search" button,</li> 
-      <li> press the "Continue to Login" button, </li> 
-      <li> check if you are the person indicated on the access data form,</li> 
-      <li> enter your email address and phone number,</li> 
-      <li> choose and verify your password (minimum size 5 characters including 1 digit),</li>
-      <li> tick the acknowledgement check box,</li>           
-      <li> press the "Save & First-time Login" button,</li> 
-      <li> print your Sessional Result Slip (it includes your new Student Id for further logins), </li> 
-      <li> edit your personal data record,</li> 
-      <li> book your accommodation,</li> 
-      <li> pay your school fee,</li>
-      <li> register your courses.</li>          
-      </ol>
-      
-      <br />
-      <p>If you have to register for <strong>previous sessions</strong> or are a 
-      <strong>temporary withdrawn</strong> student, click "Previous Sessions" 
-      instead of "Return 2006/2007".</p> 
-      
-      <p><strong>Notice:</strong> Full Time Students are expected to register their 
-      courses online on or before <strong><font color="red">6th June 2007</font></strong>.
-            
-            
-      </span>       
-      
-    </metal:main>
-  </metal:body>
-</metal:html>
-
-
-
Index: WAeUP_SRP/base/skins/waeup_default/srp_view.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_default/srp_view.pt	(revision 2846)
+++ 	(revision )
@@ -1,21 +1,0 @@
-<metal:html>
-  <metal:body use-macro="here/main_template/macros/master">
-    <metal:main fill-slot="main">
-    
-      <span tal:condition="python: getattr(context.campus.documents,'srp_home_doc',None)">
-          <div tal:define="doc python: context.campus.documents.srp_home_doc.getContent()"
-               tal:content="structure python:doc.wdrender()" />
-      </span>     
-    
-      <span tal:condition="python: not getattr(context.campus.documents,'srp_home_doc',None)">
-      
-        <h2>Welcome to the     
-          <br />Student Registration Portal of the University of Benin, Nigeria</h2>
-          <br />
-          You are logged in and viewing the portal's root folder. Please go to one of the sections above.     
-          
-       </span>
-       
-    </metal:main>
-  </metal:body>
-</metal:html>
Index: WAeUP_SRP/base/skins/waeup_design/main_template.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_design/main_template.pt	(revision 2846)
+++ 	(revision )
@@ -1,219 +1,0 @@
-<metal:block define-macro="master"
-  tal:define="showthirdcol showthirdcol|python:1;
-  emptybody emptybody|request/emptybody|nothing;
-  mtool here/portal_membership;
-  
-  utool nocall:here/portal_url;
-  atool here/portal_actions;
-  ttool here/portal_trees;
-  wtool here/portal_workflow;
-  ptool here/portal_cpsportlets;
-  context_url python:here.getContextUrl(utool=utool);
-  here_url here/absolute_url;
-  static_dir here/portal_properties/static_dir;
-  static_base_url string:${here/getBaseUrl}${static_dir};
-  base_url here/getBaseUrl;
-  member mtool/getAuthenticatedMember;
-  isAnon mtool/isAnonymousUser;
-  isHomeless python:isAnon or member.getProperty('homeless', 0);
-  isHomeless python:(isHomeless == '0' and [0] or [isHomeless])[0];
-  actions python:atool.listFilteredActionsFor(here);
-  wf_state python:wtool.getInfoFor(here,'review_state','');
-  uname python: isAnon and 'Guest' or member.getUserName();
-  checkPerm nocall: mtool/checkPermission;
-  cpsmcat nocall:here/translation_service;
-  locale here/translation_service/getSelectedLanguage;
-  in_ws here/isInWorkspace;
-  waeup_skin here/get_waeup_skin;
-  student_theme python:test(waeup_skin == 'WAeUP_Student',1,0);
-  navigation_slot python:test(student_theme,'student_navigation_slot','navigation_slot');
-  object_tabs python:test(student_theme,'student_object_slot','staff_object_slot');
-  
-  ">
-  <metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-  </metal:block>
-  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
-        lang="en">
-    <head>
-      <metal:block use-macro="here/header_lib_header/macros/header|here/header_lib/macros/header">
-        <metal:block fill-slot="base">
-          <metal:block define-slot="base">
-            <base href=""
-                  tal:attributes="href string:${here_url}/" />
-          </metal:block>
-        </metal:block>
-        <metal:block fill-slot="head_slot">
-          <metal:block define-slot="head_slot" />
-        </metal:block>
-        <metal:block fill-slot="style_slot">
-          <link rel="stylesheet" type="text/css" media="all"
-                tal:attributes="href string:${static_base_url}common.css" />
-          <link rel="stylesheet" type="text/css" media="all"
-                tal:attributes="href string:${static_base_url}${waeup_skin}/render.css" />
-          <metal:block define-slot="style_slot" />
-        </metal:block>
-        <metal:block fill-slot="javascript_head_slot">
-          <metal:block define-slot="javascript_head_slot" />
-        </metal:block>
-      </metal:block>
-      <link rel="icon"
-            href="ng.png"
-            tal:attributes="href string:${static_base_url}ng.png"
-            type="image/png" />
-      <link rel="shortcut icon"
-            href="icons/ng.png"
-            tal:attributes="href string:${static_base_url}ng.png"
-            type="image/png" />
-    </head>
-    <body tal:condition="emptybody"
-          style="margin: 0px;"
-          tal:attributes="onload here/getOnLoad|string:setFocus();">
-      <metal:block define-slot="body" />
-      <metal:block define-slot="main" />
-    </body>
-    
-    <body tal:condition="not:emptybody"
-          style="margin: 0px;"
-          tal:attributes="onload here/getOnLoad|string:setFocus();">
-      
-     
-      <table summary="Logo Block"
-             style="margin-left: auto; margin-right: auto; width: 100%;"
-             class="shapeNoBorder colorTransparent" cellpadding="0" 
-             cellspacing="0">
-        <tbody>
-          <tr>
-            <td style="width: 20px;"></td>
-            <td valign="top" style="width: 120px; padding: 10px 10px 0 0; text-align: right;">
-              <img tal:attributes="src string:${static_base_url}logo_left.jpg"  alt="Logo" />
-            </td>
-            <td style="padding: 27px 0 0 0; text-align: left;" valign="top">
-              <img tal:attributes="src string:${static_base_url}logo_right.gif" alt="Logo" />
-            </td>
-            <td style="width: 20px;"></td>
-          </tr>
-        </tbody>
-      </table>
-
-      <table summary="Navigation Block"
-             style="margin-left: auto; margin-right: auto; width: 100%;"
-             class="shapeNoBorder colorTransparent" cellpadding="0"
-             cellspacing="0">
-        <tbody>
-          <tr>
-            <td style="width: 20px;" valign="top"></td>
-            <td style="" valign="top">
-              <div id="navigation_slot" 
-                       style="padding: 0em 0em 1px; text-align: right;"
-                       class="fontColornavigation fontShapenavigation portalTabTabStyle cpsskinsHBox body">
-                 <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot=navigation_slot)"
-                  tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet)" />
-              </div>
-            </td>
-            <td style="width: 20px;" valign="top"></td>
-          </tr>
-        </tbody>
-      </table>
-      
-      
-      <table summary="Main Table Block 1"
-           style="margin-left: auto; margin-right: auto; width: 100%;"
-           cellpadding="0" cellspacing="0">
-      <tbody>
-        <tr>
-          <td style="width: 20px;" valign="top"></td>
-          <td style="width: 170px;text-align: center;"
-              valign="top">
-            <div id="portal_session" style="padding: 0.4em 0.4em 0.4em 0.3em;"
-                 class="colorBarAreaColor fontColordefaultnovisitedlinks fontShapeaverage shapeAreaShape9">
-                    <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot='portal_session')"
-                               tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-            </div>
-          </td>
-          <td style="text-align: left; padding: 0.2em 0.2em 0em;" class="colorBarColor" valign="top">
-            <metal:block define-slot="action_slot" />
-            <div id="object_tabs" class="fontColornavigation fontShapeaverage cpsskinsHBox body"
-                 tal:define="portlets python:ptool.getPortlets(context=context, slot=object_tabs)">
-                <tal:block repeat="portlet portlets"
-                           tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet)" />
-            </div>
-          </td>
-          <td tal:condition="not:student_theme"
-              class="colorBarColor" valign="top" style="text-align: right;padding: 0.2em 0.2em 0em; width: 280px;">
-            <div id="status_slot" class="fontColordefaultfontcolors fontShapeaverage cpsskinsHBox body"
-                 tal:define="portlets python:ptool.getPortlets(context=context, slot='status_slot')">
-                <tal:block repeat="portlet portlets"
-                           tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-            </div>
-          </td>
-          <td style="width: 20px;"
-              valign="top"></td>
-        </tr>
-      </tbody>
-    </table>
-  
-  
-  
-    <table summary="Main Table Block 2"
-             style="margin-left: auto; margin-right: auto; width: 100%;"
-             class="" cellpadding="0" cellspacing="0">
-      <tbody>
-        <tr>
-          <td style="width: 20px;" valign="top"></td>
-          <td style="width: 170px;text-align: left;"
-              class="colorBarColor fontColornavigation fontShapeaverage boxShapenavbox cpsskinsBox" valign="top">
-            <div id="staff_actions_slot" class="body" style="padding: 1.5em 0.5em 1.5em 0.5em;">
-              <tal:block tal:condition="not:student_theme" repeat="portlet python:ptool.getPortlets(context=context, slot='staff_actions_slot')"
-                         tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-              <tal:block tal:condition="not:student_theme" repeat="portlet python:ptool.getPortlets(context=context, slot='global_actions_slot')"
-                         tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-              <tal:block tal:condition="student_theme" repeat="portlet python:ptool.getPortlets(context=context, slot='student_actions_slot')"
-                         tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-
-              <span tal:condition="student_theme">
-              <div style="padding: 0em;">
-                <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot='student_workflow')"
-                             tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-              </div>
-              </span>
-              
-              <div style="padding-top: 10px;">
-              <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot='student_notice_slot')"
-                             tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
-              </div>  
-
-
-            </div>
-          </td>
-          <td style="" class="shapeAreaShape5 colorBarAreaColor" valign="top">
-            <div style="padding: 0.5em; text-align: left;" class="fontColordefaultfontcolors fontShapeaverage">
-              <metal:block use-macro="here/generic_lib_portal_message/macros/portal_message" />
-              <metal:block define-slot="header" />
-              <metal:block define-slot="main" />
-              <metal:block define-slot="sub" />
-            </div>
-          </td>
-          <td style="width: 20px;" valign="top"></td>
-        </tr>
-      </tbody>
-    </table>
-    
-    
-    <table summary="Copyright Info Block"
-             style="margin-left: auto; margin-right: auto; width: 100%;"
-             cellspacing="0">
-        <tbody>
-          <tr>
-            <td style="width: 20px;" valign="top"></td>
-            <td style="padding: 0.2em; text-align: right;" valign="top">
-              <div class="fontColordefaultfontcolors fontShapeaverage">
-              Copyright WAeUP Group 2007</div>
-            </td>
-            <td style="width: 20px;" valign="top"></td>
-          </tr>
-        </tbody>
-    </table>
-    </body>
-  </html>
-</metal:block>
Index: WAeUP_SRP/base/skins/waeup_design/slip_template.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_design/slip_template.pt	(revision 2846)
+++ 	(revision )
@@ -1,109 +1,0 @@
-<metal:block define-macro="master"
-  tal:define="showthirdcol showthirdcol|python:1;
-  emptybody emptybody|request/emptybody|nothing;
-  mtool here/portal_membership;
-
-  utool nocall:here/portal_url;
-  atool here/portal_actions;
-  ttool here/portal_trees;
-  wtool here/portal_workflow;
-  ptool here/portal_cpsportlets;
-  context_url python:here.getContextUrl(utool=utool);
-  here_url here/absolute_url;
-  base_url here/getBaseUrl;  
-  static_dir here/portal_properties/static_dir;
-  static_base_url string:${base_url}${static_dir};  
-  member mtool/getAuthenticatedMember;
-  isAnon mtool/isAnonymousUser;
-  isHomeless python:isAnon or member.getProperty('homeless', 0);
-  isHomeless python:(isHomeless == '0' and [0] or [isHomeless])[0];
-  actions python:atool.listFilteredActionsFor(here);
-  wf_state python:wtool.getInfoFor(here,'review_state','');
-  uname python: isAnon and 'Guest' or member.getUserName();
-  checkPerm nocall: mtool/checkPermission;
-  cpsmcat nocall:here/translation_service;
-  locale here/translation_service/getSelectedLanguage;
-  in_ws here/isInWorkspace;
-  waeup_skin here/get_waeup_skin;
-  ">
-  <metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-  </metal:block>
-  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
-        lang="en">
-    <head>
-      <metal:block use-macro="here/header_lib_header/macros/header|here/header_lib/macros/header">
-        <metal:block fill-slot="base">
-          <metal:block define-slot="base">
-            <base href=""
-                  tal:attributes="href string:${here_url}/" />
-          </metal:block>
-        </metal:block>
-        <metal:block fill-slot="head_slot">
-          <metal:block define-slot="head_slot" />
-        </metal:block>
-        <metal:block fill-slot="style_slot">
-          <link rel="stylesheet" type="text/css" media="all"
-                tal:attributes="href string:${static_base_url}common.css" />
-          <metal:block define-slot="style_slot" />
-        </metal:block>
-        <metal:block fill-slot="javascript_head_slot">
-          <metal:block define-slot="javascript_head_slot" />
-        </metal:block>
-      </metal:block>
-      <link rel="icon"
-            href="ng.png"
-            tal:attributes="href string:${static_base_url}ng.png"
-            type="image/png" />
-      <link rel="shortcut icon"
-            href="icons/ng.png"
-            tal:attributes="href string:${static_base_url}ng.png"
-            type="image/png" />
-    </head>
-    <body tal:condition="emptybody"
-          style="margin: 0px;"
-          tal:attributes="onload here/getOnLoad|string:setFocus();">
-      <metal:block define-slot="body" />
-      <metal:block define-slot="main" />
-    </body>
-    <body tal:condition="not:emptybody"
-          style="margin: 0px;"
-          tal:attributes="onload here/getOnLoad|string:setFocus();">
-   
-    <table summary="Logo Block"
-           style="margin-left: auto; margin-right: auto; width: 100%;"
-           class="shapeNoBorder colorTransparent" cellpadding="0"
-           cellspacing="0">
-      <tbody>
-        <tr>
-          <td style="width: 20px;" valign="top"></td>
-          <td valign="top" style="width: 80px; padding: 0.5em; text-align: right;">
-            <img tal:attributes="src string:${static_base_url}logo_left.jpg"  alt="Logo"
-                     height="84" width="82" />
-          </td>
-          <td style="padding: 2em 0em 0em 0em; text-align: left;" valign="top">
-            <img tal:attributes="src string:${static_base_url}logo_right.gif" 
-                     alt="Logo" height="51" width="234" />
-          </td>
-          <td style="width: 20px;" valign="top"></td>
-        </tr>
-      </tbody>
-    </table>
-      
-    <table summary="Main Block" cellpadding="0" cellspacing="0" 
-           style="margin-left:auto;margin-right:auto;width:100%;">
-      <tr>
-        <td valign="top" style="width:700px">
-          <div style="padding:2em; text-align: left;" 
-               class="fontColordefaultfontcolors fontShapeTitleindex shapeAreaShape">
-                  <metal:block use-macro="here/generic_lib_portal_message/macros/portal_message" />
-                  <metal:block define-slot="header" />
-                  <metal:block define-slot="main" />
-                  <metal:block define-slot="sub" />
-          </div>
-        </td>
-      </tr>
-    </table>
-  </body>
-</html>
-</metal:block>
Index: WAeUP_SRP/base/skins/waeup_epayment/getNextInfo.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_epayment/getNextInfo.py	(revision 2846)
+++ 	(revision )
@@ -1,62 +1,0 @@
-## Script (Python) "getNextInfo"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=student_brain
-##title=
-##
-# $Id: getNextInfo.py 2678 2007-11-16 13:41:44Z henrik $
-"""
-return the students next info
-"""
-try:
-    from Products.zdb import set_trace
-except:
-    def set_trace():
-        pass
-
-info = {}
-
-reasons = ''
-
-session_id = student_brain.session
-level_id = student_brain.level
-review_state = student_brain.review_state
-verdict = student_brain.verdict
-
-has_verdict = verdict and verdict != 'N/A'
-has_session = session_id and session_id != 'N/A'
-has_level = level_id and level_id != 'N/A'
-
-info['next_transition'] = None
-info['next_session_id'] = next_session_id = session_id
-info['next_level_id'] = next_level_id = level_id
-info['next_verdict'] = verdict
-info['next_previous_verdict'] = ''
-verdicts_voc = context.portal_vocabularies.verdicts
-if review_state == 'cleared_and_validated':
-    info['next_transition'] = "pay_school_fee"
-    info['next_verdict'] = ''
-elif review_state == 'returning' and has_verdict and has_level and has_session:
-    info['next_session_id'] = next_session_id = "%02d" % (int(session_id)+1)
-    if int(session_id) > 4:
-        info['next_transition'] = "pay_school_fee"
-        info['next_verdict'] = ''
-        info['next_previous_verdict'] = verdict
-        if verdict in ('A','B',):
-            info['next_level_id'] = "%s" % (divmod(int(level_id),100)[0]*100 + 100)
-        elif verdict == 'C':
-            info['next_level_id'] = "%s" % (int(level_id) + 10)
-        else:
-            info['next_level_id'] = level_id
-    else:
-        info['next_level_id'] = "%s" % (int(level_id) + 100)
-elif review_state == 'returning' and not (has_session and has_level and has_verdict):
-    reasons = "Your data record is incomplete. School fee payment has been disabled, please contact your faculty!"
-
-info['reasons'] = reasons
-info['next_session_str'] = context.getSessionsVoc(next_session_id)
-
-return info
Index: WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 2846)
+++ 	(revision )
@@ -1,117 +1,0 @@
-## Script (Python) "getPaymentsFolderInfo"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=
-##title=
-##
-# $Id$
-"""
-Info for the PaymentsFolder
-"""
-
-mtool = context.portal_membership
-if mtool.isAnonymousUser():
-    return None
-try:
-    from Products.zdb import set_trace
-except:
-    def set_trace():
-        pass
-
-
-#import logging
-#logger = logging.getLogger('Skins.getPaymentsFolderInfo')
-def cmp_id(a,b):
-    s1 = "%(id)s" % a
-    s2 = "%(id)s" % b
-    if s1 == s2:
-        return 0
-    if s1 > s2:
-        return 1
-    return -1
-
-import DateTime
-request = context.REQUEST
-students = context.portal_url.getPortalObject().campus.students
-student_id = context.getStudentId()
-if student_id is None:
-    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
-student = getattr(students,student_id)
-s_brain = context.students_catalog(id = student_id)[0]
-
-payments = []
-#from Products.zdb import set_trace;set_trace()
-
-info = {}
-is_so = info['is_so'] = context.isSectionOfficer()
-is_student = info['is_student'] = context.isStudent()
-info['student_name'] = s_brain.name
-info['query_url'] = "https://webpay.interswitchng.com/paydirect/services/TransactionQueryURL.aspx"
-review_state = info['review_state'] = s_brain.review_state
-parttime = s_brain.mode and s_brain.mode.endswith('_pt')
-fulltime = s_brain.mode and s_brain.mode.endswith('_ft')
-
-#if review_state == 'cleared_and_validated' or (parttime and review_state == 'returning'):
-#    online_payment = True
-#elif fulltime and review_state == 'returning':
-#    sc_payment = True
-
-session = s_brain.session
-next_info = context.getNextInfo(s_brain)
-info['next_session'] = next_info['next_session_id']
-info['next_session_str'] = next_info['next_session_str']
-info['payment_method'] = ""
-info['reasons'] = next_info['reasons']
-
-if review_state == 'cleared_and_validated':
-    info['payment_method'] = "online_payment"
-elif review_state == 'returning' and info['next_session'] != session:
-    info['payment_method'] = "sc_payment"
-info['prod_id'] = '61'
-
-info['student_name'] = s_brain.name
-payments_path = "%s/campus/students/%s/payments" % (context.portal_url.getPortalPath(),student_id)
-sos = context.portal_catalog(container_path=payments_path)
-info['is_so'] = is_so
-
-for so in sos:
-    row = {}
-    row['id'] = so.getId
-    row['title'] = so.Title
-    url = row['url'] = "%s/%s" % (payments_path,so.getId)
-    so_doc = context.restrictedTraverse(url,default=None).getContent()
-    row['type'] = so.portal_type
-    review_state = row['review_state'] = so.review_state
-    if so_doc.type_description.startswith('School Fee'):
-        row['is_approvable'] = is_so and (review_state == "opened") and info['review_state'] == 'cleared_and_validated'
-    else:
-        row['is_approvable'] = is_so and (review_state == "opened")
-    row['is_requeryable'] = False
-    #set_trace()
-    row['resp_desc'] = getattr(so_doc,'resp_desc','no response')
-    row['trans_ref'] = getattr(so_doc,'order_id','')
-    if so_doc.type_description.startswith('School Fee'):
-        if review_state == 'opened' and info['review_state'] == 'cleared_and_validated' and hasattr(so_doc, 'order_id') and not so_doc.resp_code:
-            row['is_requeryable'] = True
-            row['callback_url'] = "%s/payments/%s/interswitch_cb" % (student.absolute_url(),
-                                                            so.getId)
-            href = '%(query_url)s' % info
-            href += '?transRef=%(trans_ref)s' % row
-            href += '&prodID=%(prod_id)s' % info
-            href += '&redirectURL=%(callback_url)s' % row
-            row['href'] = href
-    if (review_state == "closed") and so_doc.resp_code in ('SC','00','AP','IP',):
-        row['confirmed'] = 'active'
-    else:
-        row['confirmed'] = 'unsuccessful'
-    row['is_editable'] = is_so and (row['confirmed'] == 'active')
-
-    payments.append(row)
-
-payments.sort(cmp_id)
-info['payments'] = payments
-return info
-
Index: WAeUP_SRP/base/skins/waeup_epayment/goto_interswitch_form.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_epayment/goto_interswitch_form.pt	(revision 2846)
+++ 	(revision )
@@ -1,43 +1,0 @@
-<metal:body use-macro="here/main_template/macros/master">
-    <metal:main fill-slot="main"
-                tal:define="info options/info">
-                
-        <h3>Authorize Online Payment! </h3>
-        <br />
-                
-      <form method="post" action="pay_online"
-            tal:attributes="action info/action ">
-      <span tal:repeat="arg python:info['args'].items()"
-            tal:omit-tag="">
-          <input type="hidden" tal:attributes="name python:arg[0];value python:arg[1]" />
-      </span>          
-        <table>
-          <tr>
-            <td width="100px">
-            Payment:</td>
-            <td tal:content="info/type_description"></td>
-          </tr>
-          <tr>
-            <td>
-            Name:
-            </td>
-            <td tal:content="info/pay_bill_to" />
-          </tr>
-          <tr>
-            <td >
-            Amount:
-            </td>
-            <td> Naira <span tal:content="info/amount" /></td>
-          </tr>
-      
-        </table>
-        <br />
-        <input type="submit" 
-               class="standalone" 
-               name="goto_bank" 
-               value="Proceed to Payment Gateway" 
-               />
-      </form>
-    </metal:main>
-</metal:body>
-
Index: WAeUP_SRP/base/skins/waeup_epayment/interswitch_form.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_epayment/interswitch_form.pt	(revision 2846)
+++ 	(revision )
@@ -1,41 +1,0 @@
-<metal:body use-macro="here/main_template/macros/master">
-  <metal:main fill-slot="main"
-              tal:define="info options/info">
-    <h3>Confirm Your Payment Data! </h3>
-    <br />
-    <span tal:condition="not: info/payment_possible">
-      No payment information for your course available.
-    </span>
-    <span tal:condition="info/payment_possible">
-      <form method="post" action="pay_interswitch">
-        <table>
-          <tr>
-            <td width="100px">
-            Payment:</td>
-            <td tal:content="info/type_description"></td>
-          </tr>
-          <tr>
-            <td>
-            Name:
-            </td>
-            <td tal:content="info/pay_bill_to" />
-          </tr>
-          <tr>
-            <td >
-            Amount:
-            </td>
-            <td> Naira <span tal:content="info/amount" /></td>
-          </tr>
-        </table>
-        <br />
-        <input type="submit" 
-               class="standalone" 
-               name="goto_bank" 
-               value="Confirm" 
-               />
-
-      </form>
-    </span>
-    </metal:main>
-</metal:body>
-
Index: WAeUP_SRP/base/skins/waeup_epayment/pay_interswitch.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_epayment/pay_interswitch.py	(revision 2846)
+++ 	(revision )
@@ -1,162 +1,0 @@
-## Script (Python) "pay_online"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=
-##title=
-##
-# $Id$
-"""
-pay online
-"""
-from urllib import urlencode
-import logging
-logger = logging.getLogger('Skins.pay_interswitch')
-import DateTime
-
-if context.portal_membership.isAnonymousUser():
-    return None
-
-try:
-    from Products.zdb import set_trace
-except:
-    def set_trace():
-        pass
-request = context.REQUEST
-wftool = context.portal_workflow
-students = context.portal_url.getPortalObject().campus.students
-
-
-student_id = context.getStudentId()
-student = getattr(students,student_id)
-
-sbrain = context.students_catalog(id=student_id)[0]
-#amount,description = context.getSchoolFee(sbrain.faculty,sbrain.session,sbrain.course)
-info = {}
-info['student'] = sbrain
-info['payment_possible'] = False
-info['amount'] = '0'
-info['bank'] = ''
-info['type_description'] = ''
-info['pay_bill_to'] = ''
-fee_dict = context.getSchoolFee(sbrain)
-fulltime = sbrain.mode.endswith('_ft')
-new = sbrain.review_state == 'cleared_and_validated'
-returning = sbrain.review_state == 'returning'
-if not fee_dict or (not new and fulltime) or not (new or returning):
-    return context.interswitch_form(info=info)
-info['site_id'] = '61'
-info['currency_id'] = '566'
-if new:
-    amount = info['amount'] = fee_dict['new']
-elif returning:
-    amount = info['amount'] = fee_dict['returning']
-if fulltime:
-    pay_item_id = "6100"
-    info['type_code'] = sbrain.faculty   #type_code is redundant and will be removed soon
-    info['bank'] = ''
-else:
-    pay_item_id = "6101"
-    info['type_code'] = sbrain.course  #type_code is redundant and will be removed soon
-    info['bank'] = ''
-info['payment_possible'] = True
-info['type_description'] = fee_dict['description']
-info['pay_bill_to'] = sbrain.name
-info['pay_ship_to'] = "University of Benin"
-info['student_id'] = student_id
-info['student_name'] = sbrain.name
-info['student_email'] = sbrain.email
-now = DateTime.DateTime()
-info['date'] = now
-timestamp = "%d" % int(now.timeTime()*1000)
-info['order_id'] = "%s%s" % (student_id[1:],timestamp)
-p_id = "p%s" % timestamp
-
-if student_id is None:
-    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
-
-if True or context.portal_url().find('uniben-demo.waeup.org') >-1 or\
-   context.portal_url().find('uniben.waeup.org') >-1:
-    info['action'] = "https://webpay.interswitchng.com/paydirect/webpay/pay.aspx"
-else:
-    #pass
-    #return None
-    info['action'] = "%s/payments/%s/simulate_callback" % (student.absolute_url(),p_id)
-
-
-if "payments" not in student.objectIds():
-    student.invokeFactory('PaymentsFolder','payments')
-    payments = getattr(student,'payments')
-    d = {}
-    d['Title'] = 'Payments'
-    payments.getContent().edit(mapping=d)
-    wftool.doActionFor(payments,'open')
-else:
-    payments = getattr(student,'payments')
-if request.has_key('epayment'):
-    return context.interswitch_form(info=info)
-
-
-payments.invokeFactory('Payment', p_id)
-payment = getattr(payments,p_id)
-wftool.doActionFor(payment,'open')
-d = {}
-d.update(info)
-#from Products.zdb import set_trace;set_trace()
-payment.getContent().edit(mapping=d)
-#wftool.doActionFor(payment,'close')
-#wftool.doActionFor(student,'pay_school_fee')
-info['callback_url'] = "%s/payments/%s/interswitch_cb?echo=%s" % (student.absolute_url(),
-                                                                  p_id,
-                                                                  p_id)
-
-logger.info('%(student_id)s initiated online school fee payment with order_id %(order_id)s and callback url %(callback_url)s' % info)
-payment_fields = (('product_id','site_id'),
-                  ('site_redirect_url','callback_url'),
-                  ('Currency','currency_id'),
-                  ('cust_id','student_id'),
-                  ('cust_id_desc','type_description'),
-                  ('cust_name','student_name'),
-                  ('txn_ref','order_id'),
-                  ('Amount','amount'),
-                  )
-args = {}
-for arg,field in payment_fields:
-    args[arg] = info[field]
-itotal = int(amount)*100
-wema_amount = 10000
-provider_amount = 35000
-interswitch_amount = 15000
-#uniben_amount = itotal - wema_amount - provider_amount - interswitch_amount
-uniben_amount = itotal - interswitch_amount
-xmldict = {}
-xmldict['detail_ref'] = args['txn_ref']
-xmldict['department'] = sbrain.department
-xmldict['faculty'] = sbrain.faculty
-#xmldict['wema_amt'] = "%d" % wema_amount
-#xmldict['provider_amt'] = "%d" % provider_amount
-xmldict['uniben_amt'] = "%d" % uniben_amount
-##<item_detail item_id="2" item_name="WEMA" item_amt="%(wema_amt)s" bank_id="16" acct_num="48398023902" />
-##<item_detail item_id="3" item_name="Portal Provider" item_amt="%(provider_amt)s" bank_id="47" acct_num="0980938209483" />
-xmltext = """
-<payment_item_detail>
-<item_details detail_ref="%(detail_ref)s" college="UNIBEN" department="%(department)s"
-faculty="%(faculty)s">
-<item_detail item_id="1" item_name="UNIBEN" item_amt="%(uniben_amt)s" bank_id="16" acct_num="384950902390" />
-</item_details>
-</payment_item_detail>
-""" % xmldict
-#total = int(xmldict['uniben_amt'])+int(xmldict['wema_amt'])+int(xmldict['provider_amt'])
-total = int(xmldict['uniben_amt'])
-args['Amount'] = "%d" % (total + 15000)
-args['site_name'] = "uniben.waeup.org"
-args['cust_name_desc'] = "Student Name"
-args['pay_item_id'] = pay_item_id
-args['pay_item_name'] = "UNIBEN Tuition Payments"
-args['payment_params'] = 'switch_college_split'
-#args['xml_data'] = xmltext % info
-args['xml_data'] = ''
-info['args'] = args
-return context.goto_interswitch_form(info=info)
Index: WAeUP_SRP/base/skins/waeup_layout/layout_student_acco_view_slip.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_layout/layout_student_acco_view_slip.pt	(revision 2846)
+++ 	(revision )
@@ -1,34 +1,0 @@
-<!-- a layout_lib macro -->
-<!-- $Id: layout_student_acco_view_slip.pt 1316 2007-01-17 18:05:49Z henrik $ -->
-<metal:block define-macro="default_view"
-  tal:define="layout options/layout;
-              dm options/datastructure/getDataModel;
-              widgets python:context.getRenderedWidgets(layout);
-              fields python:('bed',
-                                 'acco_res_sc_pin',
-                                 'acco_res_date',
-                                 'acco_maint_sc_pin', 
-                                 'acco_maint_date',
-                                 )"
-                                 >
-  <table width="" cellpadding="2" cellspacing="0" summary="Form layout">
-    <tr tal:repeat="field fields">
-      <tal:block tal:define="cell python: widgets[field]">
-        <tal:block define="widget cell/widget">
-          <div tal:attributes="class cell/widget_css_class|string:label;
-            id python:widget.getHtmlWidgetId()+'_widget';">
-            <td width="180px" valign="top">
-             <span class="dlabel"
-                    tal:condition="widget/label"
-                    tal:content="widget/label">label</span>:
-            </td>
-            <td> 
-               <span tal:condition="cell" tal:content="structure cell/widget_rendered"></span>
-               <span tal:condition="not:cell/widget_rendered"> none </span>
-            </td>
-          </div>
-        </tal:block>
-      </tal:block>
-    </tr>
-  </table>
-</metal:block>
Index: WAeUP_SRP/base/skins/waeup_statistics/getSimpleStudentStatistics.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_statistics/getSimpleStudentStatistics.py	(revision 2846)
+++ 	(revision )
@@ -1,150 +1,0 @@
-## Script (Python) "getRetStudentStatistics"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=
-##title=
-##
-# $Id: getStudentStatistics.py 1277 2007-01-11 21:11:37Z joachim $
-"""
-return Student Statistics
-"""
-
-import logging
-logger = logging.getLogger('Skins.getSimpleStudentStatistics')
-
-logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
-if not context.isStaff():
-    return
-
-
-catA =      (      'school_fee_paid',
-                   'courses_registered',
-                   'courses_validated',
-                   )
-
-catB =      (      'courses_registered',
-                   'courses_validated',
-                   )
-
-catC =      (      'student_created',
-                   'returning',
-                   'admitted',
-                   'clearance_pin_entered',
-                   'objection_raised',
-                   'clearance_requested',
-                   'cleared_and_validated',
-                   )
-
-current_session = context.getSessionId()[0]
-
-
-full_time =       ('ume_ft','de_ft','ug_ft','pg_ft')
-part_time =       (         'de_pt','ug_pt','pg_pt')
-diploma   =       ('dp_ft','dp_pt')
-
-
-faculties = context.portal_catalog(portal_type="Faculty")
-
-l = []
-
-fac_res = {}
-
-dict = {}
-dict['id'] = 'All Faculties'
-dict['title'] = 'All Faculties'
-
-
-res_ft = context.students_catalog(mode = full_time)
-dict['total_ft'] = len(res_ft)
-
-res_pt = context.students_catalog(mode = part_time)
-dict['total_pt'] = len(res_pt)
-
-res_dp = context.students_catalog(mode = diploma)
-dict['total_dp'] = len(res_dp)
-
-res_Aft = context.students_catalog(review_state = catA, mode = full_time, session = current_session)
-dict['total_Aft'] = len(res_Aft)
-
-res_Apt = context.students_catalog(review_state = catA, mode = part_time, session = current_session)
-dict['total_Apt'] = len(res_Apt)
-
-res_Adp = context.students_catalog(review_state = catA, mode = diploma, session = current_session)
-dict['total_Adp'] = len(res_Adp)
-
-res_Bft = context.students_catalog(review_state = catB, mode = full_time, session = current_session)
-dict['total_Bft'] = len(res_Bft)
-
-res_Bpt = context.students_catalog(review_state = catB, mode = part_time, session = current_session)
-dict['total_Bpt'] = len(res_Bpt)
-
-res_Bdp = context.students_catalog(review_state = catB, mode = diploma, session = current_session)
-dict['total_Bdp'] = len(res_Bpt)
-
-res_Cft = context.students_catalog(review_state = catC, mode = full_time, session = current_session)
-dict['total_Cft'] = len(res_Cft)
-
-res_Cpt = context.students_catalog(review_state = catC, mode = part_time, session = current_session)
-dict['total_Cpt'] = len(res_Cpt)
-
-res_Cdp = context.students_catalog(review_state = catC, mode = diploma, session = current_session)
-dict['total_Cdp'] = len(res_Cdp)
-
-
-res_total = context.students_catalog()
-dict['total_in_catalog'] = len(res_total)
-dict['not_categorized'] = dict['total_in_catalog'] - dict['total_ft'] - dict['total_pt'] - dict['total_dp']
-
-l.append(dict)
-
-
-for f in faculties:
-    dict = {}
-    dict['id'] = f.getId
-    dict['title'] = f.Title
-
-    res_ft = context.students_catalog(faculty = f.getId, mode = full_time)
-    dict['total_ft'] = len(res_ft)
-
-    res_pt = context.students_catalog(faculty = f.getId, mode = part_time)
-    dict['total_pt'] = len(res_pt)
-
-    res_dp = context.students_catalog(faculty = f.getId, mode = diploma)
-    dict['total_dp'] = len(res_dp)
-
-    res_Aft = context.students_catalog(faculty = f.getId, review_state = catA, mode = full_time, session = current_session)
-    dict['total_Aft'] = len(res_Aft)
-
-    res_Apt = context.students_catalog(faculty = f.getId, review_state = catA, mode = part_time, session = current_session)
-    dict['total_Apt'] = len(res_Apt)
-
-    res_Adp = context.students_catalog(faculty = f.getId, review_state = catA, mode = diploma, session = current_session)
-    dict['total_Adp'] = len(res_Adp)
-
-    res_Bft = context.students_catalog(faculty = f.getId, review_state = catB, mode = full_time, session = current_session)
-    dict['total_Bft'] = len(res_Bft)
-
-    res_Bpt = context.students_catalog(faculty = f.getId, review_state = catB, mode = part_time, session = current_session)
-    dict['total_Bpt'] = len(res_Bpt)
-
-    res_Bdp = context.students_catalog(faculty = f.getId, review_state = catB, mode = diploma, session = current_session)
-    dict['total_Bdp'] = len(res_Bpt)
-
-    res_Cft = context.students_catalog(faculty = f.getId, review_state = catC, mode = full_time, session = current_session)
-    dict['total_Cft'] = len(res_Cft)
-
-    res_Cpt = context.students_catalog(faculty = f.getId, review_state = catC, mode = part_time, session = current_session)
-    dict['total_Cpt'] = len(res_Cpt)
-
-    res_Cdp = context.students_catalog(faculty = f.getId, review_state = catC, mode = diploma, session = current_session)
-    dict['total_Cdp'] = len(res_Cdp)
-
-
-    l.append(dict)
-
-return l
-
-
Index: WAeUP_SRP/base/skins/waeup_student/apply_admission_manage_form.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_student/apply_admission_manage_form.pt	(revision 2846)
+++ 	(revision )
@@ -1,116 +1,0 @@
-<tal:block define="rendered_main options/rendered|nothing;
-           portal_status_message options/psm|nothing;
-           reg_no options/reg_no|nothing;
-           serial options/ds/serial|nothing;
-           ccode options/ds/course1|nothing;
-           ds options/ds|nothing;
-           ">	
-  <metal:block define-macro="edit_form">
-    <metal:block use-macro="here/main_template/macros/master">
-      <metal:block fill-slot="main">
-
-        <form action="" id="editForm" method="post" 
-              enctype="multipart/form-data" class="workflow"
-              tal:attributes="action string:${context/absolute_url}/apply_admission_manage"
-              >
-
-          <span tal:condition="not: rendered_main">
-            <h3>Application Process</h3>
-            <br />
-            
-            <table tal:define="info_applicants context/getApplicantsStatistics">
-            <tr> 
-              <td>PUME Applicants (status submitted):</td> 
-              <td><span tal:replace="info_applicants/submitted_pume" /></td>  
-            </tr>
-            <tr> 
-              <td>PUDE Applicants (status submitted):</td> 
-              <td><span tal:replace="info_applicants/submitted_pde" /></td>
-            </tr>
-            <tr> 
-              <td>CEST Applicants (status submitted):</td> 
-              <td><span tal:replace="info_applicants/submitted_cest" /></td>
-            </tr>            
-            <tr> 
-              <td>All Applicants (status admitted):</td> 
-              <td><span tal:replace="info_applicants/admitted" /></td>  
-            </tr>
-            <tr> 
-              <td>All Applicants (status student record created):</td> 
-              <td><span tal:replace="info_applicants/created" /></td>
-            </tr>            
-            <tr> 
-              <td>All Applicants (status not admitted):</td> 
-              <td><span tal:replace="info_applicants/not_admitted" /></td>  
-            </tr>    
-            </table>            
-            
-            <br/>
-            
-            <div class="label">Registration No:</div>
-            <input type="text" name="reg_no" size="15"
-                   />
-            <input type="submit" class="standalone" 
-                   name="search"
-                   value="Search" 
-                   />
-          </span>
-
-        <span tal:condition="rendered_main">
-          <h3>Application Record <span tal:replace="reg_no"/> 
-            <tal:block condition="python: ds['screening_type'] == 'cest' and ccode">
-                (<span tal:replace="python:'%s%s/07' % (ccode[:3],serial)" />)
-            </tal:block>
-          </h3>
-            <br />
-            <div tal:replace="structure rendered_main" />
-                        
-            <input type="hidden" name="reg_no"
-                   tal:attributes="value reg_no|nothing"
-                   />
-            <input type="submit" class="standalone" 
-                   name="reset"
-                   value="Reset" 
-                   tal:condition="python: ds['status'] and 'submitted' in ds['status']"
-                   />
-                   
-                   
-            <input type="submit" class="standalone" 
-                   name="edit"
-                   value="Save" 
-                   />                   
-                   
-            <br /><br />
-            
-
-            <div class="label">Registration No:</div>
-            <input type="text" name="new_reg_no" size="15"
-                   /> &nbsp;
-            <input type="submit" class="standalone" 
-                   name="search"
-                   value="Search next" 
-                   />
-          </span>
-        </form>
-        
-        <br/>
-        
-        <form action="" id="editForm" method="post" 
-            enctype="multipart/form-data" class="workflow"
-            tal:attributes="action string:${context/absolute_url}/apply_admission"
-            tal:condition="rendered_main"
-            >
-        <input type="hidden" name="reg_no"
-               tal:attributes="value ds/reg_no|nothing"
-               tal:condition="ds/reg_no|nothing"/>
-        <input type="submit" 
-               class="standalone" 
-               name="manage"
-               value="Assume Applicant's Role"
-               />             
-        </form>          
-        
-      </metal:block>
-    </metal:block>
-  </metal:block>
-</tal:block>
Index: WAeUP_SRP/base/skins/waeup_student/getApplicantsStatistics.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_student/getApplicantsStatistics.py	(revision 2846)
+++ 	(revision )
@@ -1,41 +1,0 @@
-## Script (Python) "getApplicantsStatistics"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=
-##title=
-##
-# $Id: getApplicantsStatistics.py 1277 2007-01-11 21:11:37Z joachim $
-"""
-return Student Statistics
-"""
-
-import logging
-logger = logging.getLogger('Skins.getApplicantsStatistics')
-
-logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
-if not context.isStaff():
-    return 'Not allowed'
-
-
-info = {}
-res_submitted_pume = context.applicants_catalog(status = 'submitted', screening_type = 'pume')
-res_submitted_cest = context.applicants_catalog(status = 'submitted', screening_type = 'cest')
-res_not_admitted = context.applicants_catalog(status = 'not admitted')
-res_submitted_pde = context.applicants_catalog(status = 'submitted', screening_type = 'pde')
-res_admitted = context.applicants_catalog(status = 'admitted')
-res_created = context.applicants_catalog(status = 'created')
-
-info['submitted_pume'] = len(res_submitted_pume)
-info['submitted_cest'] = len(res_submitted_cest)
-info['admitted'] = len(res_admitted)
-info['not_admitted'] = len(res_not_admitted)
-info['submitted_pde'] = len(res_submitted_pde)
-info['created'] = len(res_created)
-
-return info
-
-
-
Index: WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py	(revision 2846)
+++ 	(revision )
@@ -1,118 +1,0 @@
-## Script (Python) "getStudyLevelInfo"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=student=None
-##title=
-##
-# $Id$
-"""
-return Info about the Studylevel
-"""
-
-wf = context.portal_workflow
-mtool = context.portal_membership
-if mtool.isAnonymousUser():
-    return None
-member = mtool.getAuthenticatedMember()
-member_id = str(member)
-
-try:
-    from Products.zdb import set_trace
-except:
-    def set_trace():
-        pass
-
-
-# from Products.AdvancedQuery import Eq, Between, Le,In
-# try:
-#     aq_portal = context.portal_catalog.evalAdvancedQuery
-# except:
-#     aq_portal = context.portal_catalog_real.evalAdvancedQuery
-course_results = context.course_results
-request = context.REQUEST
-response = request.RESPONSE
-import logging
-logger = logging.getLogger('Skins.getStudyLevelInfo')
-
-info = {}
-
-student_id = context.getStudentId()
-level_id  =  context.getId()
-level_doc = info['doc'] = context.getContent()
-
-info['is_so'] = is_so = context.isSectionOfficer()
-info['is_student'] = is_student = context.isStudent()
-info['is_ca'] = is_ca = context.isCourseAdviser()
-info['student'] = student = context.students_catalog(id=student_id)[0]
-info['review_state'] = review_state = student.review_state
-is_current_level = level_id == student.level
-school_fee_paid =  review_state == 'school_fee_paid'
-info['is_current_level'] = is_current_level
-info['has_verdict'] = has_verdict = level_doc.verdict
-
-info['submission_allowed']= school_fee_paid and is_current_level and not has_verdict
-info['validation_allowed']= review_state == 'courses_registered' and is_current_level
-info['rejection_allowed']= review_state in ('courses_registered', 'courses_validated',) and is_current_level
-info['validated'] = review_state == 'courses_validated' and is_current_level
-
-info['show_check_boxes'] =  (is_ca and school_fee_paid and is_current_level and not has_verdict) or\
-                            (is_student and school_fee_paid and is_current_level and not has_verdict) or\
-                            (is_so and is_current_level and not has_verdict)
-
-info['verdict'] = context.portal_vocabularies.verdicts.get(level_doc.verdict).upper()
-info['session'] = context.portal_vocabularies.sessions.get(level_doc.session)
-info['level_str'] = context.portal_vocabularies.levels.get(level_id)
-
-info['choosen_ids'] = request.get('ids',[])
-
-#info['status_info'] = ""
-#if is_student:
-#    if review_state == 'courses_registered':
-#        info['status_info'] = "Request for course validation pending"
-#    elif review_state == 'courses_validated':
-#        info['status_info'] = "Courses validated"
-#elif is_ca:
-#    if review_state == 'courses_registered':
-#        info['status_info'] = "Please validate these courses"
-#    elif review_state == 'courses_validated':
-#        info['status_info'] = "Courses validated"
-
-cert_id = student.course
-info['cert_id'] = cert_id
-if context.objectIds():
-    course_results.moveResultsHere(context,student_id)
-    logger.info("%s initiated moveResultsHere for %s in level %s" % (member_id,student_id,level_id))
-total_credits,gpa,carry_overs,normal1,normal2,normal3 = course_results.getCourses(student_id,level_id)
-info['total_credits'] = total_credits
-max_credits = 50
-if context.getId() == student.end_level:
-    max_credits = 51
-info['max_credits'] = max_credits
-info['credits_exceeded'] = total_credits > max_credits
-current_session = student.session
-
-info['gpa'] = gpa
-if gpa and total_credits:
-    info['gpa'] = "%4.2f" % (float(gpa)/int(total_credits))
-
-
-
-# carry_overs.sort(cmp_semester_id)
-info['carry_overs'] = carry_overs
-# normal.sort(cmp_semester_id)
-info['normal1'] = normal1
-info['normal2'] = normal2
-info['normal3'] = normal3
-
-info['data_missing'] = not info['normal1'] and not info['normal2'] and not info['normal3']
-info['spillover'] = student.level > student.end_level
-
-students_object = context.portal_url.getPortalObject().campus.students
-student = getattr(students_object, student_id)
-info['app'] = student.application
-info['app_doc'] = student.application.getContent()
-
-return info
Index: WAeUP_SRP/base/skins/waeup_student/mail2student.py
===================================================================
--- WAeUP_SRP/base/skins/waeup_student/mail2student.py	(revision 2846)
+++ 	(revision )
@@ -1,45 +1,0 @@
-## Script (Python) "mail2student"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=co_name=None,co_email=None,student_email=None,probtype=None,commt=None, action=None
-##title=
-##
-# $Id: mail2admin.py 869 2006-11-15 13:46:49Z henrik $
-
-from urllib import urlencode
-
-mhost = context.MailHost
-prop = context.portal_properties
-REQUEST = context.REQUEST
-
-d = {}
-#d['co_name'] = co_name
-#d['co_email'] = co_email
-d['co_name'] = 'CRPU Uniben'
-d['co_email'] = prop.email_from_address
-d['student_email'] = student_email
-d['probtype'] = probtype
-d['commt'] = commt
-
-message = """
-From: %(co_name)s <%(co_email)s>
-To: %(student_email)s
-Cc: %(co_email)s
-Reply-To: %(co_email)s
-Subject: %(probtype)s
-%(commt)s
-"""
-
-mhost.send(message % d)
-
-args = {}
-psm = "Your message has been sent!"
-args['portal_status_message'] = psm
-if action:
-    url = context.absolute_url() + '/' + action + '?' + urlencode(args)
-else:
-    url = context.absolute_url() +'?' + urlencode(args)
-return REQUEST.RESPONSE.redirect(url)
Index: WAeUP_SRP/base/skins/waeup_student/search_students_form.pt
===================================================================
--- WAeUP_SRP/base/skins/waeup_student/search_students_form.pt	(revision 2846)
+++ 	(revision )
@@ -1,144 +1,0 @@
-<metal:body use-macro="here/main_template/macros/master">
-    <metal:main fill-slot="main"
-            tal:define="rendered options/rendered;
-            portal_status_message options/psm;
-            students options/students;
-            info options/info|nothing;
-            is_so context/isSectionOfficer;
-            allowed options/allowed|nothing;"
-            >
-      <span tal:condition="not: allowed">
-        <span tal:content="here/illegal_view" />
-      </span>
-      <span tal:condition="allowed" tal:omit-tag="">
-      
-      <strong>
-      <nobr><a href="statistics_new_view">New Student Statistics</a>
-      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
-      <nobr><a href="statistics_ret_view">Returning Student Statistics</a>
-      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
-      <nobr><a href="statistics_simple_view">Basic Student Statistics</a>
-      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>      
-  
-      <span tal:condition="is_so">
-          <nobr><a href="apply_admission_manage">Application Process</a>
-          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>      
-          <nobr><a href="view_logs">View Log Files</a>
-          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
-          <nobr><a href="add_student">Add Student Record</a>        
-          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
-          <nobr><a href="deactivate_students">Deactivate Student Record(s)</a>           
-      </span>
-      </strong>
-    
-              
-        <h3> Search Student Section</h3><br />
-          You are logged in as member <span tal:replace="info/member|nothing" /> 
-          <span tal:condition="info/faculties|nothing" tal:omit-tag="">
-            who is ClearanceOfficer for Faculty 
-            <span tal:repeat="faculty info/faculties" tal:content="faculty" />
-          </span>
-          <span tal:condition="info/departments|nothing" tal:omit-tag="">
-            and <span tal:repeat="department info/departments|nothing" tal:content="department"/></span>.
-          <br /><br />
-        <span tal:replace="structure rendered" />
-        <span tal:condition="students">
-          <span
-              tal:define="items students;
-              columns python:3;
-              items_per_page python:40;
-              max_items python:300;
-              zoom python:0;
-              batches_all python:here.getBatchList(items,columns, items_per_page,zoom,max_items=400);
-              batches python:batches_all[0];
-              batch_info python:batches_all[1];
-              zoomed python:batches_all[2];
-              mq nocall:modules/ZTUtils/make_query;"
-              tal:omit-tag=""
-              >
-            <tal:block tal:condition="python: items and batch_info and batch_info['nb_pages'] > 1">
-              <div class="batchLayout">
-                <span i18n:translate="">
-                  Objects: 
-                  <strong>
-                    <tal:block replace="batch_info/start"
-                               i18n:name="batch_start" /> - <tal:block replace="batch_info/limit"
-                                                                       i18n:name="batch_limit" />
-                  </strong>
-                  of <tal:block replace="batch_info/length"
-                                i18n:name="batch_length" />
-                </span>
-              </div>
-              <br />
-            </tal:block>
-            <table class="contentListing" width="100%">
-              <span tal:repeat="rows batches" tal:omit-tag="">
-                <span tal:repeat="student rows">
-                  <tr tal:condition="student" 
-                      tal:attributes="class python:test(repeat['student'].even(), 'even ajaxtd', 'odd ajaxtd')">
-                    <td><a href="id" tal:attributes="href string:${context/portal_url}/campus/students/${student/id}"
-                           tal:content="student/id"></a></td>    
-                    <td>
-                      <span tal:replace="student/name" />
-                    </td>    
-                    <td><span tal:replace="student/matric_no" /></td>   
-                    <td><span tal:replace="student/jamb_reg_no" /></td>
-                    <td tal:condition="options/co_view|nothing">
-                      <a href="id" 
-                         tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/clearance/external_clearance_edit_form"
-                         target="edit"
-                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
-                         >[view and change state]</a></td>
-                    <td tal:condition="options/ca_view|nothing">
-                      <a href="id" 
-                         tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/study_course/study_course/${student/level}/external_study_level_view"
-                         target="edit"
-                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
-                         >[view and validate course list]</a></td>
-                  </tr>
-                </span>
-              </span>
-            </table>
-            <tal:block condition="python:batch_info and batch_info['nb_pages'] > 1">
-              <div class="pageNavigationLayout">
-                <a tal:define="previous batch_info/previous"
-                   tal:condition="python:previous is not None"
-                   tal:attributes="href python:'%s?%s'%(request['URL'],
-                   mq(request.form, b_start=0))"
-                   >
-                (&lt;&lt;)</a>
-                <a tal:define="previous batch_info/previous"
-                   tal:condition="python:previous is not None"
-                   tal:attributes="href python:'%s?%s'%(request['URL'],
-                   mq(request.form, b_start=previous))"
-                   i18n:translate="batch_previous">Previous</a>
-                <tal:block repeat="page batch_info/pages">
-                  <tal:block condition="python:page != batch_info['start'] - 1">
-                    <a tal:attributes="href python:'%s?%s'%(request['URL'],
-                    mq(request.form, b_start=page))"
-                    tal:content="repeat/page/number">1</a>&nbsp;
-                  </tal:block>
-                  <tal:block condition="python:page == batch_info['start'] - 1">
-                    <span tal:content="string:${repeat/page/number}" />&nbsp;
-                  </tal:block>
-                </tal:block>
-                <a tal:define="next batch_info/next"
-                   tal:condition="python:next is not None"
-                   tal:attributes="href python:'%s?%s'%(request['URL'],
-                   mq(request.form, b_start=next))"
-                   i18n:translate="batch_next">Next</a>
-                <a tal:define="next batch_info/next;
-                last_page python:batch_info['pages'][-1]"
-                tal:condition="python:next is not None"
-                tal:attributes="href python:'%s?%s'%(request['URL'],
-                mq(request.form, b_start=last_page))"
-                >
-                (&gt;&gt;)</a>
-              </div>
-            </tal:block>
-          </span>
-        </span>
-      </span>
-    </metal:main>
-</metal:body>
-  
Index: WAeUP_SRP/uniben/waeup_custom/apply_admission_manage_form.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/apply_admission_manage_form.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/apply_admission_manage_form.pt	(revision 2847)
@@ -0,0 +1,116 @@
+<tal:block define="rendered_main options/rendered|nothing;
+           portal_status_message options/psm|nothing;
+           reg_no options/reg_no|nothing;
+           serial options/ds/serial|nothing;
+           ccode options/ds/course1|nothing;
+           ds options/ds|nothing;
+           ">	
+  <metal:block define-macro="edit_form">
+    <metal:block use-macro="here/main_template/macros/master">
+      <metal:block fill-slot="main">
+
+        <form action="" id="editForm" method="post" 
+              enctype="multipart/form-data" class="workflow"
+              tal:attributes="action string:${context/absolute_url}/apply_admission_manage"
+              >
+
+          <span tal:condition="not: rendered_main">
+            <h3>Application Process</h3>
+            <br />
+            
+            <table tal:define="info_applicants context/getApplicantsStatistics">
+            <tr> 
+              <td>PUME Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_pume" /></td>  
+            </tr>
+            <tr> 
+              <td>PUDE Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_pde" /></td>
+            </tr>
+            <tr> 
+              <td>CEST Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_cest" /></td>
+            </tr>            
+            <tr> 
+              <td>All Applicants (status admitted):</td> 
+              <td><span tal:replace="info_applicants/admitted" /></td>  
+            </tr>
+            <tr> 
+              <td>All Applicants (status student record created):</td> 
+              <td><span tal:replace="info_applicants/created" /></td>
+            </tr>            
+            <tr> 
+              <td>All Applicants (status not admitted):</td> 
+              <td><span tal:replace="info_applicants/not_admitted" /></td>  
+            </tr>    
+            </table>            
+            
+            <br/>
+            
+            <div class="label">Registration No:</div>
+            <input type="text" name="reg_no" size="15"
+                   />
+            <input type="submit" class="standalone" 
+                   name="search"
+                   value="Search" 
+                   />
+          </span>
+
+        <span tal:condition="rendered_main">
+          <h3>Application Record <span tal:replace="reg_no"/> 
+            <tal:block condition="python: ds['screening_type'] == 'cest' and ccode">
+                (<span tal:replace="python:'%s%s/07' % (ccode[:3],serial)" />)
+            </tal:block>
+          </h3>
+            <br />
+            <div tal:replace="structure rendered_main" />
+                        
+            <input type="hidden" name="reg_no"
+                   tal:attributes="value reg_no|nothing"
+                   />
+            <input type="submit" class="standalone" 
+                   name="reset"
+                   value="Reset" 
+                   tal:condition="python: ds['status'] and 'submitted' in ds['status']"
+                   />
+                   
+                   
+            <input type="submit" class="standalone" 
+                   name="edit"
+                   value="Save" 
+                   />                   
+                   
+            <br /><br />
+            
+
+            <div class="label">Registration No:</div>
+            <input type="text" name="new_reg_no" size="15"
+                   /> &nbsp;
+            <input type="submit" class="standalone" 
+                   name="search"
+                   value="Search next" 
+                   />
+          </span>
+        </form>
+        
+        <br/>
+        
+        <form action="" id="editForm" method="post" 
+            enctype="multipart/form-data" class="workflow"
+            tal:attributes="action string:${context/absolute_url}/apply_admission"
+            tal:condition="rendered_main"
+            >
+        <input type="hidden" name="reg_no"
+               tal:attributes="value ds/reg_no|nothing"
+               tal:condition="ds/reg_no|nothing"/>
+        <input type="submit" 
+               class="standalone" 
+               name="manage"
+               value="Assume Applicant's Role"
+               />             
+        </form>          
+        
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: WAeUP_SRP/uniben/waeup_custom/getApplicantsStatistics.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/getApplicantsStatistics.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/getApplicantsStatistics.py	(revision 2847)
@@ -0,0 +1,41 @@
+## Script (Python) "getApplicantsStatistics"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id: getApplicantsStatistics.py 1277 2007-01-11 21:11:37Z joachim $
+"""
+return Student Statistics
+"""
+
+import logging
+logger = logging.getLogger('Skins.getApplicantsStatistics')
+
+logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
+if not context.isStaff():
+    return 'Not allowed'
+
+
+info = {}
+res_submitted_pume = context.applicants_catalog(status = 'submitted', screening_type = 'pume')
+res_submitted_cest = context.applicants_catalog(status = 'submitted', screening_type = 'cest')
+res_not_admitted = context.applicants_catalog(status = 'not admitted')
+res_submitted_pde = context.applicants_catalog(status = 'submitted', screening_type = 'pde')
+res_admitted = context.applicants_catalog(status = 'admitted')
+res_created = context.applicants_catalog(status = 'created')
+
+info['submitted_pume'] = len(res_submitted_pume)
+info['submitted_cest'] = len(res_submitted_cest)
+info['admitted'] = len(res_admitted)
+info['not_admitted'] = len(res_not_admitted)
+info['submitted_pde'] = len(res_submitted_pde)
+info['created'] = len(res_created)
+
+return info
+
+
+
Index: WAeUP_SRP/uniben/waeup_custom/getCosCombinedVoc.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/getCosCombinedVoc.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/getCosCombinedVoc.py	(revision 2847)
@@ -0,0 +1,20 @@
+##parameters=key=None
+# $Id: getCosCombinedVoc.py 2814 2007-11-28 12:26:51Z henrik $
+"""
+Return the combined courses as an vocabulary
+
+"""
+if key is None:
+    l = []
+    for k,v in context.portal_vocabularies.cos.items():
+        l += (k,v),
+    for k,v in context.portal_vocabularies.cos_cest.items():
+        if k:
+            l += (k,v),
+    return l
+for voc in (context.portal_vocabularies.cos,
+            context.portal_vocabularies.cos_cest):
+    title = voc.get(key,None)
+    if title is not None:
+        return title
+return "unknown course  %s" % key
Index: WAeUP_SRP/uniben/waeup_custom/getNextInfo.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/getNextInfo.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/getNextInfo.py	(revision 2847)
@@ -0,0 +1,62 @@
+## Script (Python) "getNextInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student_brain
+##title=
+##
+# $Id: getNextInfo.py 2678 2007-11-16 13:41:44Z henrik $
+"""
+return the students next info
+"""
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+
+info = {}
+
+reasons = ''
+
+session_id = student_brain.session
+level_id = student_brain.level
+review_state = student_brain.review_state
+verdict = student_brain.verdict
+
+has_verdict = verdict and verdict != 'N/A'
+has_session = session_id and session_id != 'N/A'
+has_level = level_id and level_id != 'N/A'
+
+info['next_transition'] = None
+info['next_session_id'] = next_session_id = session_id
+info['next_level_id'] = next_level_id = level_id
+info['next_verdict'] = verdict
+info['next_previous_verdict'] = ''
+verdicts_voc = context.portal_vocabularies.verdicts
+if review_state == 'cleared_and_validated':
+    info['next_transition'] = "pay_school_fee"
+    info['next_verdict'] = ''
+elif review_state == 'returning' and has_verdict and has_level and has_session:
+    info['next_session_id'] = next_session_id = "%02d" % (int(session_id)+1)
+    if int(session_id) > 4:
+        info['next_transition'] = "pay_school_fee"
+        info['next_verdict'] = ''
+        info['next_previous_verdict'] = verdict
+        if verdict in ('A','B',):
+            info['next_level_id'] = "%s" % (divmod(int(level_id),100)[0]*100 + 100)
+        elif verdict == 'C':
+            info['next_level_id'] = "%s" % (int(level_id) + 10)
+        else:
+            info['next_level_id'] = level_id
+    else:
+        info['next_level_id'] = "%s" % (int(level_id) + 100)
+elif review_state == 'returning' and not (has_session and has_level and has_verdict):
+    reasons = "Your data record is incomplete. School fee payment has been disabled, please contact your faculty!"
+
+info['reasons'] = reasons
+info['next_session_str'] = context.getSessionsVoc(next_session_id)
+
+return info
Index: WAeUP_SRP/uniben/waeup_custom/getPaymentsFolderInfo.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/getPaymentsFolderInfo.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/getPaymentsFolderInfo.py	(revision 2847)
@@ -0,0 +1,117 @@
+## Script (Python) "getPaymentsFolderInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id: getPaymentsFolderInfo.py 2761 2007-11-26 09:45:58Z henrik $
+"""
+Info for the PaymentsFolder
+"""
+
+mtool = context.portal_membership
+if mtool.isAnonymousUser():
+    return None
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+
+
+#import logging
+#logger = logging.getLogger('Skins.getPaymentsFolderInfo')
+def cmp_id(a,b):
+    s1 = "%(id)s" % a
+    s2 = "%(id)s" % b
+    if s1 == s2:
+        return 0
+    if s1 > s2:
+        return 1
+    return -1
+
+import DateTime
+request = context.REQUEST
+students = context.portal_url.getPortalObject().campus.students
+student_id = context.getStudentId()
+if student_id is None:
+    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
+student = getattr(students,student_id)
+s_brain = context.students_catalog(id = student_id)[0]
+
+payments = []
+#from Products.zdb import set_trace;set_trace()
+
+info = {}
+is_so = info['is_so'] = context.isSectionOfficer()
+is_student = info['is_student'] = context.isStudent()
+info['student_name'] = s_brain.name
+info['query_url'] = "https://webpay.interswitchng.com/paydirect/services/TransactionQueryURL.aspx"
+review_state = info['review_state'] = s_brain.review_state
+parttime = s_brain.mode and s_brain.mode.endswith('_pt')
+fulltime = s_brain.mode and s_brain.mode.endswith('_ft')
+
+#if review_state == 'cleared_and_validated' or (parttime and review_state == 'returning'):
+#    online_payment = True
+#elif fulltime and review_state == 'returning':
+#    sc_payment = True
+
+session = s_brain.session
+next_info = context.getNextInfo(s_brain)
+info['next_session'] = next_info['next_session_id']
+info['next_session_str'] = next_info['next_session_str']
+info['payment_method'] = ""
+info['reasons'] = next_info['reasons']
+
+if review_state == 'cleared_and_validated':
+    info['payment_method'] = "online_payment"
+elif review_state == 'returning' and info['next_session'] != session:
+    info['payment_method'] = "sc_payment"
+info['prod_id'] = '61'
+
+info['student_name'] = s_brain.name
+payments_path = "%s/campus/students/%s/payments" % (context.portal_url.getPortalPath(),student_id)
+sos = context.portal_catalog(container_path=payments_path)
+info['is_so'] = is_so
+
+for so in sos:
+    row = {}
+    row['id'] = so.getId
+    row['title'] = so.Title
+    url = row['url'] = "%s/%s" % (payments_path,so.getId)
+    so_doc = context.restrictedTraverse(url,default=None).getContent()
+    row['type'] = so.portal_type
+    review_state = row['review_state'] = so.review_state
+    if so_doc.type_description.startswith('School Fee'):
+        row['is_approvable'] = is_so and (review_state == "opened") and info['review_state'] == 'cleared_and_validated'
+    else:
+        row['is_approvable'] = is_so and (review_state == "opened")
+    row['is_requeryable'] = False
+    #set_trace()
+    row['resp_desc'] = getattr(so_doc,'resp_desc','no response')
+    row['trans_ref'] = getattr(so_doc,'order_id','')
+    if so_doc.type_description.startswith('School Fee'):
+        if review_state == 'opened' and info['review_state'] == 'cleared_and_validated' and hasattr(so_doc, 'order_id') and not so_doc.resp_code:
+            row['is_requeryable'] = True
+            row['callback_url'] = "%s/payments/%s/interswitch_cb" % (student.absolute_url(),
+                                                            so.getId)
+            href = '%(query_url)s' % info
+            href += '?transRef=%(trans_ref)s' % row
+            href += '&prodID=%(prod_id)s' % info
+            href += '&redirectURL=%(callback_url)s' % row
+            row['href'] = href
+    if (review_state == "closed") and so_doc.resp_code in ('SC','00','AP','IP',):
+        row['confirmed'] = 'active'
+    else:
+        row['confirmed'] = 'unsuccessful'
+    row['is_editable'] = is_so and (row['confirmed'] == 'active')
+
+    payments.append(row)
+
+payments.sort(cmp_id)
+info['payments'] = payments
+return info
+
Index: WAeUP_SRP/uniben/waeup_custom/getSimpleStudentStatistics.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/getSimpleStudentStatistics.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/getSimpleStudentStatistics.py	(revision 2847)
@@ -0,0 +1,150 @@
+## Script (Python) "getRetStudentStatistics"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id: getStudentStatistics.py 1277 2007-01-11 21:11:37Z joachim $
+"""
+return Student Statistics
+"""
+
+import logging
+logger = logging.getLogger('Skins.getSimpleStudentStatistics')
+
+logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
+if not context.isStaff():
+    return
+
+
+catA =      (      'school_fee_paid',
+                   'courses_registered',
+                   'courses_validated',
+                   )
+
+catB =      (      'courses_registered',
+                   'courses_validated',
+                   )
+
+catC =      (      'student_created',
+                   'returning',
+                   'admitted',
+                   'clearance_pin_entered',
+                   'objection_raised',
+                   'clearance_requested',
+                   'cleared_and_validated',
+                   )
+
+current_session = context.getSessionId()[0]
+
+
+full_time =       ('ume_ft','de_ft','ug_ft','pg_ft')
+part_time =       (         'de_pt','ug_pt','pg_pt')
+diploma   =       ('dp_ft','dp_pt')
+
+
+faculties = context.portal_catalog(portal_type="Faculty")
+
+l = []
+
+fac_res = {}
+
+dict = {}
+dict['id'] = 'All Faculties'
+dict['title'] = 'All Faculties'
+
+
+res_ft = context.students_catalog(mode = full_time)
+dict['total_ft'] = len(res_ft)
+
+res_pt = context.students_catalog(mode = part_time)
+dict['total_pt'] = len(res_pt)
+
+res_dp = context.students_catalog(mode = diploma)
+dict['total_dp'] = len(res_dp)
+
+res_Aft = context.students_catalog(review_state = catA, mode = full_time, session = current_session)
+dict['total_Aft'] = len(res_Aft)
+
+res_Apt = context.students_catalog(review_state = catA, mode = part_time, session = current_session)
+dict['total_Apt'] = len(res_Apt)
+
+res_Adp = context.students_catalog(review_state = catA, mode = diploma, session = current_session)
+dict['total_Adp'] = len(res_Adp)
+
+res_Bft = context.students_catalog(review_state = catB, mode = full_time, session = current_session)
+dict['total_Bft'] = len(res_Bft)
+
+res_Bpt = context.students_catalog(review_state = catB, mode = part_time, session = current_session)
+dict['total_Bpt'] = len(res_Bpt)
+
+res_Bdp = context.students_catalog(review_state = catB, mode = diploma, session = current_session)
+dict['total_Bdp'] = len(res_Bpt)
+
+res_Cft = context.students_catalog(review_state = catC, mode = full_time, session = current_session)
+dict['total_Cft'] = len(res_Cft)
+
+res_Cpt = context.students_catalog(review_state = catC, mode = part_time, session = current_session)
+dict['total_Cpt'] = len(res_Cpt)
+
+res_Cdp = context.students_catalog(review_state = catC, mode = diploma, session = current_session)
+dict['total_Cdp'] = len(res_Cdp)
+
+
+res_total = context.students_catalog()
+dict['total_in_catalog'] = len(res_total)
+dict['not_categorized'] = dict['total_in_catalog'] - dict['total_ft'] - dict['total_pt'] - dict['total_dp']
+
+l.append(dict)
+
+
+for f in faculties:
+    dict = {}
+    dict['id'] = f.getId
+    dict['title'] = f.Title
+
+    res_ft = context.students_catalog(faculty = f.getId, mode = full_time)
+    dict['total_ft'] = len(res_ft)
+
+    res_pt = context.students_catalog(faculty = f.getId, mode = part_time)
+    dict['total_pt'] = len(res_pt)
+
+    res_dp = context.students_catalog(faculty = f.getId, mode = diploma)
+    dict['total_dp'] = len(res_dp)
+
+    res_Aft = context.students_catalog(faculty = f.getId, review_state = catA, mode = full_time, session = current_session)
+    dict['total_Aft'] = len(res_Aft)
+
+    res_Apt = context.students_catalog(faculty = f.getId, review_state = catA, mode = part_time, session = current_session)
+    dict['total_Apt'] = len(res_Apt)
+
+    res_Adp = context.students_catalog(faculty = f.getId, review_state = catA, mode = diploma, session = current_session)
+    dict['total_Adp'] = len(res_Adp)
+
+    res_Bft = context.students_catalog(faculty = f.getId, review_state = catB, mode = full_time, session = current_session)
+    dict['total_Bft'] = len(res_Bft)
+
+    res_Bpt = context.students_catalog(faculty = f.getId, review_state = catB, mode = part_time, session = current_session)
+    dict['total_Bpt'] = len(res_Bpt)
+
+    res_Bdp = context.students_catalog(faculty = f.getId, review_state = catB, mode = diploma, session = current_session)
+    dict['total_Bdp'] = len(res_Bpt)
+
+    res_Cft = context.students_catalog(faculty = f.getId, review_state = catC, mode = full_time, session = current_session)
+    dict['total_Cft'] = len(res_Cft)
+
+    res_Cpt = context.students_catalog(faculty = f.getId, review_state = catC, mode = part_time, session = current_session)
+    dict['total_Cpt'] = len(res_Cpt)
+
+    res_Cdp = context.students_catalog(faculty = f.getId, review_state = catC, mode = diploma, session = current_session)
+    dict['total_Cdp'] = len(res_Cdp)
+
+
+    l.append(dict)
+
+return l
+
+
Index: WAeUP_SRP/uniben/waeup_custom/getStudyLevelInfo.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/getStudyLevelInfo.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/getStudyLevelInfo.py	(revision 2847)
@@ -0,0 +1,118 @@
+## Script (Python) "getStudyLevelInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id: getStudyLevelInfo.py 2760 2007-11-26 07:39:15Z henrik $
+"""
+return Info about the Studylevel
+"""
+
+wf = context.portal_workflow
+mtool = context.portal_membership
+if mtool.isAnonymousUser():
+    return None
+member = mtool.getAuthenticatedMember()
+member_id = str(member)
+
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+
+
+# from Products.AdvancedQuery import Eq, Between, Le,In
+# try:
+#     aq_portal = context.portal_catalog.evalAdvancedQuery
+# except:
+#     aq_portal = context.portal_catalog_real.evalAdvancedQuery
+course_results = context.course_results
+request = context.REQUEST
+response = request.RESPONSE
+import logging
+logger = logging.getLogger('Skins.getStudyLevelInfo')
+
+info = {}
+
+student_id = context.getStudentId()
+level_id  =  context.getId()
+level_doc = info['doc'] = context.getContent()
+
+info['is_so'] = is_so = context.isSectionOfficer()
+info['is_student'] = is_student = context.isStudent()
+info['is_ca'] = is_ca = context.isCourseAdviser()
+info['student'] = student = context.students_catalog(id=student_id)[0]
+info['review_state'] = review_state = student.review_state
+is_current_level = level_id == student.level
+school_fee_paid =  review_state == 'school_fee_paid'
+info['is_current_level'] = is_current_level
+info['has_verdict'] = has_verdict = level_doc.verdict
+
+info['submission_allowed']= school_fee_paid and is_current_level and not has_verdict
+info['validation_allowed']= review_state == 'courses_registered' and is_current_level
+info['rejection_allowed']= review_state in ('courses_registered', 'courses_validated',) and is_current_level
+info['validated'] = review_state == 'courses_validated' and is_current_level
+
+info['show_check_boxes'] =  (is_ca and school_fee_paid and is_current_level and not has_verdict) or\
+                            (is_student and school_fee_paid and is_current_level and not has_verdict) or\
+                            (is_so and is_current_level and not has_verdict)
+
+info['verdict'] = context.portal_vocabularies.verdicts.get(level_doc.verdict).upper()
+info['session'] = context.portal_vocabularies.sessions.get(level_doc.session)
+info['level_str'] = context.portal_vocabularies.levels.get(level_id)
+
+info['choosen_ids'] = request.get('ids',[])
+
+#info['status_info'] = ""
+#if is_student:
+#    if review_state == 'courses_registered':
+#        info['status_info'] = "Request for course validation pending"
+#    elif review_state == 'courses_validated':
+#        info['status_info'] = "Courses validated"
+#elif is_ca:
+#    if review_state == 'courses_registered':
+#        info['status_info'] = "Please validate these courses"
+#    elif review_state == 'courses_validated':
+#        info['status_info'] = "Courses validated"
+
+cert_id = student.course
+info['cert_id'] = cert_id
+if context.objectIds():
+    course_results.moveResultsHere(context,student_id)
+    logger.info("%s initiated moveResultsHere for %s in level %s" % (member_id,student_id,level_id))
+total_credits,gpa,carry_overs,normal1,normal2,normal3 = course_results.getCourses(student_id,level_id)
+info['total_credits'] = total_credits
+max_credits = 50
+if context.getId() == student.end_level:
+    max_credits = 51
+info['max_credits'] = max_credits
+info['credits_exceeded'] = total_credits > max_credits
+current_session = student.session
+
+info['gpa'] = gpa
+if gpa and total_credits:
+    info['gpa'] = "%4.2f" % (float(gpa)/int(total_credits))
+
+
+
+# carry_overs.sort(cmp_semester_id)
+info['carry_overs'] = carry_overs
+# normal.sort(cmp_semester_id)
+info['normal1'] = normal1
+info['normal2'] = normal2
+info['normal3'] = normal3
+
+info['data_missing'] = not info['normal1'] and not info['normal2'] and not info['normal3']
+info['spillover'] = student.level > student.end_level
+
+students_object = context.portal_url.getPortalObject().campus.students
+student = getattr(students_object, student_id)
+info['app'] = student.application
+info['app_doc'] = student.application.getContent()
+
+return info
Index: WAeUP_SRP/uniben/waeup_custom/goto_interswitch_form.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/goto_interswitch_form.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/goto_interswitch_form.pt	(revision 2847)
@@ -0,0 +1,43 @@
+<metal:body use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main"
+                tal:define="info options/info">
+                
+        <h3>Authorize Online Payment! </h3>
+        <br />
+                
+      <form method="post" action="pay_online"
+            tal:attributes="action info/action ">
+      <span tal:repeat="arg python:info['args'].items()"
+            tal:omit-tag="">
+          <input type="hidden" tal:attributes="name python:arg[0];value python:arg[1]" />
+      </span>          
+        <table>
+          <tr>
+            <td width="100px">
+            Payment:</td>
+            <td tal:content="info/type_description"></td>
+          </tr>
+          <tr>
+            <td>
+            Name:
+            </td>
+            <td tal:content="info/pay_bill_to" />
+          </tr>
+          <tr>
+            <td >
+            Amount:
+            </td>
+            <td> Naira <span tal:content="info/amount" /></td>
+          </tr>
+      
+        </table>
+        <br />
+        <input type="submit" 
+               class="standalone" 
+               name="goto_bank" 
+               value="Proceed to Payment Gateway" 
+               />
+      </form>
+    </metal:main>
+</metal:body>
+
Index: WAeUP_SRP/uniben/waeup_custom/interswitch_form.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/interswitch_form.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/interswitch_form.pt	(revision 2847)
@@ -0,0 +1,41 @@
+<metal:body use-macro="here/main_template/macros/master">
+  <metal:main fill-slot="main"
+              tal:define="info options/info">
+    <h3>Confirm Your Payment Data! </h3>
+    <br />
+    <span tal:condition="not: info/payment_possible">
+      No payment information for your course available.
+    </span>
+    <span tal:condition="info/payment_possible">
+      <form method="post" action="pay_interswitch">
+        <table>
+          <tr>
+            <td width="100px">
+            Payment:</td>
+            <td tal:content="info/type_description"></td>
+          </tr>
+          <tr>
+            <td>
+            Name:
+            </td>
+            <td tal:content="info/pay_bill_to" />
+          </tr>
+          <tr>
+            <td >
+            Amount:
+            </td>
+            <td> Naira <span tal:content="info/amount" /></td>
+          </tr>
+        </table>
+        <br />
+        <input type="submit" 
+               class="standalone" 
+               name="goto_bank" 
+               value="Confirm" 
+               />
+
+      </form>
+    </span>
+    </metal:main>
+</metal:body>
+
Index: WAeUP_SRP/uniben/waeup_custom/layout_student_acco_view_slip.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/layout_student_acco_view_slip.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/layout_student_acco_view_slip.pt	(revision 2847)
@@ -0,0 +1,34 @@
+<!-- a layout_lib macro -->
+<!-- $Id: layout_student_acco_view_slip.pt 1316 2007-01-17 18:05:49Z henrik $ -->
+<metal:block define-macro="default_view"
+  tal:define="layout options/layout;
+              dm options/datastructure/getDataModel;
+              widgets python:context.getRenderedWidgets(layout);
+              fields python:('bed',
+                                 'acco_res_sc_pin',
+                                 'acco_res_date',
+                                 'acco_maint_sc_pin', 
+                                 'acco_maint_date',
+                                 )"
+                                 >
+  <table width="" cellpadding="2" cellspacing="0" summary="Form layout">
+    <tr tal:repeat="field fields">
+      <tal:block tal:define="cell python: widgets[field]">
+        <tal:block define="widget cell/widget">
+          <div tal:attributes="class cell/widget_css_class|string:label;
+            id python:widget.getHtmlWidgetId()+'_widget';">
+            <td width="180px" valign="top">
+             <span class="dlabel"
+                    tal:condition="widget/label"
+                    tal:content="widget/label">label</span>:
+            </td>
+            <td> 
+               <span tal:condition="cell" tal:content="structure cell/widget_rendered"></span>
+               <span tal:condition="not:cell/widget_rendered"> none </span>
+            </td>
+          </div>
+        </tal:block>
+      </tal:block>
+    </tr>
+  </table>
+</metal:block>
Index: WAeUP_SRP/uniben/waeup_custom/mail2admin.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/mail2admin.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/mail2admin.py	(revision 2847)
@@ -0,0 +1,44 @@
+## Script (Python) "mail2admin"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=fullname=None,regno=None,email=None,probtype=None,descr=None,commt=None
+##title=
+##
+# $Id: mail2admin.py 2334 2007-10-09 15:01:36Z henrik $
+
+mhost = context.MailHost
+prop = context.portal_properties
+
+d = {}
+d['fullname'] = fullname
+d['email'] = email
+d['email_from'] = prop.email_from_address
+d['regno'] = regno
+d['probtype'] = probtype
+d['descr'] = descr
+
+message = """
+From: %(fullname)s <%(email)s>
+To: %(email_from)s
+Cc: %(email)s
+Bcc: waeup@saoas.org
+Reply-To: %(email)s
+Subject: Uniben Contact
+
+Fullname: %(fullname)s
+Member ID: %(regno)s
+Problem Type: %(probtype)s
+Description: %(descr)s
+"""
+
+mhost.send(message % d)
+
+REQUEST = context.REQUEST
+RESPONSE = REQUEST.RESPONSE
+
+redirect_url = REQUEST.HTTP_REFERER
+redirect_url = '%s/?%s' % (redirect_url,'portal_status_message=Your message has been sent!')
+RESPONSE.redirect(redirect_url)
Index: WAeUP_SRP/uniben/waeup_custom/mail2student.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/mail2student.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/mail2student.py	(revision 2847)
@@ -0,0 +1,45 @@
+## Script (Python) "mail2student"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=co_name=None,co_email=None,student_email=None,probtype=None,commt=None, action=None
+##title=
+##
+# $Id: mail2admin.py 869 2006-11-15 13:46:49Z henrik $
+
+from urllib import urlencode
+
+mhost = context.MailHost
+prop = context.portal_properties
+REQUEST = context.REQUEST
+
+d = {}
+#d['co_name'] = co_name
+#d['co_email'] = co_email
+d['co_name'] = 'CRPU Uniben'
+d['co_email'] = prop.email_from_address
+d['student_email'] = student_email
+d['probtype'] = probtype
+d['commt'] = commt
+
+message = """
+From: %(co_name)s <%(co_email)s>
+To: %(student_email)s
+Cc: %(co_email)s
+Reply-To: %(co_email)s
+Subject: %(probtype)s
+%(commt)s
+"""
+
+mhost.send(message % d)
+
+args = {}
+psm = "Your message has been sent!"
+args['portal_status_message'] = psm
+if action:
+    url = context.absolute_url() + '/' + action + '?' + urlencode(args)
+else:
+    url = context.absolute_url() +'?' + urlencode(args)
+return REQUEST.RESPONSE.redirect(url)
Index: WAeUP_SRP/uniben/waeup_custom/main_template.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/main_template.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/main_template.pt	(revision 2847)
@@ -0,0 +1,219 @@
+<metal:block define-macro="master"
+  tal:define="showthirdcol showthirdcol|python:1;
+  emptybody emptybody|request/emptybody|nothing;
+  mtool here/portal_membership;
+  
+  utool nocall:here/portal_url;
+  atool here/portal_actions;
+  ttool here/portal_trees;
+  wtool here/portal_workflow;
+  ptool here/portal_cpsportlets;
+  context_url python:here.getContextUrl(utool=utool);
+  here_url here/absolute_url;
+  static_dir here/portal_properties/static_dir;
+  static_base_url string:${here/getBaseUrl}${static_dir};
+  base_url here/getBaseUrl;
+  member mtool/getAuthenticatedMember;
+  isAnon mtool/isAnonymousUser;
+  isHomeless python:isAnon or member.getProperty('homeless', 0);
+  isHomeless python:(isHomeless == '0' and [0] or [isHomeless])[0];
+  actions python:atool.listFilteredActionsFor(here);
+  wf_state python:wtool.getInfoFor(here,'review_state','');
+  uname python: isAnon and 'Guest' or member.getUserName();
+  checkPerm nocall: mtool/checkPermission;
+  cpsmcat nocall:here/translation_service;
+  locale here/translation_service/getSelectedLanguage;
+  in_ws here/isInWorkspace;
+  waeup_skin here/get_waeup_skin;
+  student_theme python:test(waeup_skin == 'WAeUP_Student',1,0);
+  navigation_slot python:test(student_theme,'student_navigation_slot','navigation_slot');
+  object_tabs python:test(student_theme,'student_object_slot','staff_object_slot');
+  
+  ">
+  <metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+  </metal:block>
+  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+        lang="en">
+    <head>
+      <metal:block use-macro="here/header_lib_header/macros/header|here/header_lib/macros/header">
+        <metal:block fill-slot="base">
+          <metal:block define-slot="base">
+            <base href=""
+                  tal:attributes="href string:${here_url}/" />
+          </metal:block>
+        </metal:block>
+        <metal:block fill-slot="head_slot">
+          <metal:block define-slot="head_slot" />
+        </metal:block>
+        <metal:block fill-slot="style_slot">
+          <link rel="stylesheet" type="text/css" media="all"
+                tal:attributes="href string:${static_base_url}common.css" />
+          <link rel="stylesheet" type="text/css" media="all"
+                tal:attributes="href string:${static_base_url}${waeup_skin}/render.css" />
+          <metal:block define-slot="style_slot" />
+        </metal:block>
+        <metal:block fill-slot="javascript_head_slot">
+          <metal:block define-slot="javascript_head_slot" />
+        </metal:block>
+      </metal:block>
+      <link rel="icon"
+            href="ng.png"
+            tal:attributes="href string:${static_base_url}ng.png"
+            type="image/png" />
+      <link rel="shortcut icon"
+            href="icons/ng.png"
+            tal:attributes="href string:${static_base_url}ng.png"
+            type="image/png" />
+    </head>
+    <body tal:condition="emptybody"
+          style="margin: 0px;"
+          tal:attributes="onload here/getOnLoad|string:setFocus();">
+      <metal:block define-slot="body" />
+      <metal:block define-slot="main" />
+    </body>
+    
+    <body tal:condition="not:emptybody"
+          style="margin: 0px;"
+          tal:attributes="onload here/getOnLoad|string:setFocus();">
+      
+     
+      <table summary="Logo Block"
+             style="margin-left: auto; margin-right: auto; width: 100%;"
+             class="shapeNoBorder colorTransparent" cellpadding="0" 
+             cellspacing="0">
+        <tbody>
+          <tr>
+            <td style="width: 20px;"></td>
+            <td valign="top" style="width: 120px; padding: 10px 10px 0 0; text-align: right;">
+              <img tal:attributes="src string:${static_base_url}logo_left.jpg"  alt="Logo" />
+            </td>
+            <td style="padding: 27px 0 0 0; text-align: left;" valign="top">
+              <img tal:attributes="src string:${static_base_url}logo_right.gif" alt="Logo" />
+            </td>
+            <td style="width: 20px;"></td>
+          </tr>
+        </tbody>
+      </table>
+
+      <table summary="Navigation Block"
+             style="margin-left: auto; margin-right: auto; width: 100%;"
+             class="shapeNoBorder colorTransparent" cellpadding="0"
+             cellspacing="0">
+        <tbody>
+          <tr>
+            <td style="width: 20px;" valign="top"></td>
+            <td style="" valign="top">
+              <div id="navigation_slot" 
+                       style="padding: 0em 0em 1px; text-align: right;"
+                       class="fontColornavigation fontShapenavigation portalTabTabStyle cpsskinsHBox body">
+                 <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot=navigation_slot)"
+                  tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet)" />
+              </div>
+            </td>
+            <td style="width: 20px;" valign="top"></td>
+          </tr>
+        </tbody>
+      </table>
+      
+      
+      <table summary="Main Table Block 1"
+           style="margin-left: auto; margin-right: auto; width: 100%;"
+           cellpadding="0" cellspacing="0">
+      <tbody>
+        <tr>
+          <td style="width: 20px;" valign="top"></td>
+          <td style="width: 170px;text-align: center;"
+              valign="top">
+            <div id="portal_session" style="padding: 0.4em 0.4em 0.4em 0.3em;"
+                 class="colorBarAreaColor fontColordefaultnovisitedlinks fontShapeaverage shapeAreaShape9">
+                    <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot='portal_session')"
+                               tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+            </div>
+          </td>
+          <td style="text-align: left; padding: 0.2em 0.2em 0em;" class="colorBarColor" valign="top">
+            <metal:block define-slot="action_slot" />
+            <div id="object_tabs" class="fontColornavigation fontShapeaverage cpsskinsHBox body"
+                 tal:define="portlets python:ptool.getPortlets(context=context, slot=object_tabs)">
+                <tal:block repeat="portlet portlets"
+                           tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet)" />
+            </div>
+          </td>
+          <td tal:condition="not:student_theme"
+              class="colorBarColor" valign="top" style="text-align: right;padding: 0.2em 0.2em 0em; width: 280px;">
+            <div id="status_slot" class="fontColordefaultfontcolors fontShapeaverage cpsskinsHBox body"
+                 tal:define="portlets python:ptool.getPortlets(context=context, slot='status_slot')">
+                <tal:block repeat="portlet portlets"
+                           tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+            </div>
+          </td>
+          <td style="width: 20px;"
+              valign="top"></td>
+        </tr>
+      </tbody>
+    </table>
+  
+  
+  
+    <table summary="Main Table Block 2"
+             style="margin-left: auto; margin-right: auto; width: 100%;"
+             class="" cellpadding="0" cellspacing="0">
+      <tbody>
+        <tr>
+          <td style="width: 20px;" valign="top"></td>
+          <td style="width: 170px;text-align: left;"
+              class="colorBarColor fontColornavigation fontShapeaverage boxShapenavbox cpsskinsBox" valign="top">
+            <div id="staff_actions_slot" class="body" style="padding: 1.5em 0.5em 1.5em 0.5em;">
+              <tal:block tal:condition="not:student_theme" repeat="portlet python:ptool.getPortlets(context=context, slot='staff_actions_slot')"
+                         tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+              <tal:block tal:condition="not:student_theme" repeat="portlet python:ptool.getPortlets(context=context, slot='global_actions_slot')"
+                         tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+              <tal:block tal:condition="student_theme" repeat="portlet python:ptool.getPortlets(context=context, slot='student_actions_slot')"
+                         tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+
+              <span tal:condition="student_theme">
+              <div style="padding: 0em;">
+                <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot='student_workflow')"
+                             tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+              </div>
+              </span>
+              
+              <div style="padding-top: 10px;">
+              <tal:block repeat="portlet python:ptool.getPortlets(context=context, slot='student_notice_slot')"
+                             tal:content="structure python:portlet.render_cache(context_obj=context, portlet=portlet, boxedit=None)" />
+              </div>  
+
+
+            </div>
+          </td>
+          <td style="" class="shapeAreaShape5 colorBarAreaColor" valign="top">
+            <div style="padding: 0.5em; text-align: left;" class="fontColordefaultfontcolors fontShapeaverage">
+              <metal:block use-macro="here/generic_lib_portal_message/macros/portal_message" />
+              <metal:block define-slot="header" />
+              <metal:block define-slot="main" />
+              <metal:block define-slot="sub" />
+            </div>
+          </td>
+          <td style="width: 20px;" valign="top"></td>
+        </tr>
+      </tbody>
+    </table>
+    
+    
+    <table summary="Copyright Info Block"
+             style="margin-left: auto; margin-right: auto; width: 100%;"
+             cellspacing="0">
+        <tbody>
+          <tr>
+            <td style="width: 20px;" valign="top"></td>
+            <td style="padding: 0.2em; text-align: right;" valign="top">
+              <div class="fontColordefaultfontcolors fontShapeaverage">
+              Copyright WAeUP Group 2007</div>
+            </td>
+            <td style="width: 20px;" valign="top"></td>
+          </tr>
+        </tbody>
+    </table>
+    </body>
+  </html>
+</metal:block>
Index: WAeUP_SRP/uniben/waeup_custom/pay_interswitch.py
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/pay_interswitch.py	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/pay_interswitch.py	(revision 2847)
@@ -0,0 +1,162 @@
+## Script (Python) "pay_online"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id: pay_interswitch.py 2664 2007-11-15 14:35:05Z henrik $
+"""
+pay online
+"""
+from urllib import urlencode
+import logging
+logger = logging.getLogger('Skins.pay_interswitch')
+import DateTime
+
+if context.portal_membership.isAnonymousUser():
+    return None
+
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+request = context.REQUEST
+wftool = context.portal_workflow
+students = context.portal_url.getPortalObject().campus.students
+
+
+student_id = context.getStudentId()
+student = getattr(students,student_id)
+
+sbrain = context.students_catalog(id=student_id)[0]
+#amount,description = context.getSchoolFee(sbrain.faculty,sbrain.session,sbrain.course)
+info = {}
+info['student'] = sbrain
+info['payment_possible'] = False
+info['amount'] = '0'
+info['bank'] = ''
+info['type_description'] = ''
+info['pay_bill_to'] = ''
+fee_dict = context.getSchoolFee(sbrain)
+fulltime = sbrain.mode.endswith('_ft')
+new = sbrain.review_state == 'cleared_and_validated'
+returning = sbrain.review_state == 'returning'
+if not fee_dict or (not new and fulltime) or not (new or returning):
+    return context.interswitch_form(info=info)
+info['site_id'] = '61'
+info['currency_id'] = '566'
+if new:
+    amount = info['amount'] = fee_dict['new']
+elif returning:
+    amount = info['amount'] = fee_dict['returning']
+if fulltime:
+    pay_item_id = "6100"
+    info['type_code'] = sbrain.faculty   #type_code is redundant and will be removed soon
+    info['bank'] = ''
+else:
+    pay_item_id = "6101"
+    info['type_code'] = sbrain.course  #type_code is redundant and will be removed soon
+    info['bank'] = ''
+info['payment_possible'] = True
+info['type_description'] = fee_dict['description']
+info['pay_bill_to'] = sbrain.name
+info['pay_ship_to'] = "University of Benin"
+info['student_id'] = student_id
+info['student_name'] = sbrain.name
+info['student_email'] = sbrain.email
+now = DateTime.DateTime()
+info['date'] = now
+timestamp = "%d" % int(now.timeTime()*1000)
+info['order_id'] = "%s%s" % (student_id[1:],timestamp)
+p_id = "p%s" % timestamp
+
+if student_id is None:
+    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
+
+if True or context.portal_url().find('uniben-demo.waeup.org') >-1 or\
+   context.portal_url().find('uniben.waeup.org') >-1:
+    info['action'] = "https://webpay.interswitchng.com/paydirect/webpay/pay.aspx"
+else:
+    #pass
+    #return None
+    info['action'] = "%s/payments/%s/simulate_callback" % (student.absolute_url(),p_id)
+
+
+if "payments" not in student.objectIds():
+    student.invokeFactory('PaymentsFolder','payments')
+    payments = getattr(student,'payments')
+    d = {}
+    d['Title'] = 'Payments'
+    payments.getContent().edit(mapping=d)
+    wftool.doActionFor(payments,'open')
+else:
+    payments = getattr(student,'payments')
+if request.has_key('epayment'):
+    return context.interswitch_form(info=info)
+
+
+payments.invokeFactory('Payment', p_id)
+payment = getattr(payments,p_id)
+wftool.doActionFor(payment,'open')
+d = {}
+d.update(info)
+#from Products.zdb import set_trace;set_trace()
+payment.getContent().edit(mapping=d)
+#wftool.doActionFor(payment,'close')
+#wftool.doActionFor(student,'pay_school_fee')
+info['callback_url'] = "%s/payments/%s/interswitch_cb?echo=%s" % (student.absolute_url(),
+                                                                  p_id,
+                                                                  p_id)
+
+logger.info('%(student_id)s initiated online school fee payment with order_id %(order_id)s and callback url %(callback_url)s' % info)
+payment_fields = (('product_id','site_id'),
+                  ('site_redirect_url','callback_url'),
+                  ('Currency','currency_id'),
+                  ('cust_id','student_id'),
+                  ('cust_id_desc','type_description'),
+                  ('cust_name','student_name'),
+                  ('txn_ref','order_id'),
+                  ('Amount','amount'),
+                  )
+args = {}
+for arg,field in payment_fields:
+    args[arg] = info[field]
+itotal = int(amount)*100
+wema_amount = 10000
+provider_amount = 35000
+interswitch_amount = 15000
+#uniben_amount = itotal - wema_amount - provider_amount - interswitch_amount
+uniben_amount = itotal - interswitch_amount
+xmldict = {}
+xmldict['detail_ref'] = args['txn_ref']
+xmldict['department'] = sbrain.department
+xmldict['faculty'] = sbrain.faculty
+#xmldict['wema_amt'] = "%d" % wema_amount
+#xmldict['provider_amt'] = "%d" % provider_amount
+xmldict['uniben_amt'] = "%d" % uniben_amount
+##<item_detail item_id="2" item_name="WEMA" item_amt="%(wema_amt)s" bank_id="16" acct_num="48398023902" />
+##<item_detail item_id="3" item_name="Portal Provider" item_amt="%(provider_amt)s" bank_id="47" acct_num="0980938209483" />
+xmltext = """
+<payment_item_detail>
+<item_details detail_ref="%(detail_ref)s" college="UNIBEN" department="%(department)s"
+faculty="%(faculty)s">
+<item_detail item_id="1" item_name="UNIBEN" item_amt="%(uniben_amt)s" bank_id="16" acct_num="384950902390" />
+</item_details>
+</payment_item_detail>
+""" % xmldict
+#total = int(xmldict['uniben_amt'])+int(xmldict['wema_amt'])+int(xmldict['provider_amt'])
+total = int(xmldict['uniben_amt'])
+args['Amount'] = "%d" % (total + 15000)
+args['site_name'] = "uniben.waeup.org"
+args['cust_name_desc'] = "Student Name"
+args['pay_item_id'] = pay_item_id
+args['pay_item_name'] = "UNIBEN Tuition Payments"
+args['payment_params'] = 'switch_college_split'
+#args['xml_data'] = xmltext % info
+args['xml_data'] = ''
+info['args'] = args
+return context.goto_interswitch_form(info=info)
Index: WAeUP_SRP/uniben/waeup_custom/search_students_form.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/search_students_form.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/search_students_form.pt	(revision 2847)
@@ -0,0 +1,144 @@
+<metal:body use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main"
+            tal:define="rendered options/rendered;
+            portal_status_message options/psm;
+            students options/students;
+            info options/info|nothing;
+            is_so context/isSectionOfficer;
+            allowed options/allowed|nothing;"
+            >
+      <span tal:condition="not: allowed">
+        <span tal:content="here/illegal_view" />
+      </span>
+      <span tal:condition="allowed" tal:omit-tag="">
+      
+      <strong>
+      <nobr><a href="statistics_new_view">New Student Statistics</a>
+      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+      <nobr><a href="statistics_ret_view">Returning Student Statistics</a>
+      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+      <nobr><a href="statistics_simple_view">Basic Student Statistics</a>
+      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>      
+  
+      <span tal:condition="is_so">
+          <nobr><a href="apply_admission_manage">Application Process</a>
+          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>      
+          <nobr><a href="view_logs">View Log Files</a>
+          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+          <nobr><a href="add_student">Add Student Record</a>        
+          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+          <nobr><a href="deactivate_students">Deactivate Student Record(s)</a>           
+      </span>
+      </strong>
+    
+              
+        <h3> Search Student Section</h3><br />
+          You are logged in as member <span tal:replace="info/member|nothing" /> 
+          <span tal:condition="info/faculties|nothing" tal:omit-tag="">
+            who is ClearanceOfficer for Faculty 
+            <span tal:repeat="faculty info/faculties" tal:content="faculty" />
+          </span>
+          <span tal:condition="info/departments|nothing" tal:omit-tag="">
+            and <span tal:repeat="department info/departments|nothing" tal:content="department"/></span>.
+          <br /><br />
+        <span tal:replace="structure rendered" />
+        <span tal:condition="students">
+          <span
+              tal:define="items students;
+              columns python:3;
+              items_per_page python:40;
+              max_items python:300;
+              zoom python:0;
+              batches_all python:here.getBatchList(items,columns, items_per_page,zoom,max_items=400);
+              batches python:batches_all[0];
+              batch_info python:batches_all[1];
+              zoomed python:batches_all[2];
+              mq nocall:modules/ZTUtils/make_query;"
+              tal:omit-tag=""
+              >
+            <tal:block tal:condition="python: items and batch_info and batch_info['nb_pages'] > 1">
+              <div class="batchLayout">
+                <span i18n:translate="">
+                  Objects: 
+                  <strong>
+                    <tal:block replace="batch_info/start"
+                               i18n:name="batch_start" /> - <tal:block replace="batch_info/limit"
+                                                                       i18n:name="batch_limit" />
+                  </strong>
+                  of <tal:block replace="batch_info/length"
+                                i18n:name="batch_length" />
+                </span>
+              </div>
+              <br />
+            </tal:block>
+            <table class="contentListing" width="100%">
+              <span tal:repeat="rows batches" tal:omit-tag="">
+                <span tal:repeat="student rows">
+                  <tr tal:condition="student" 
+                      tal:attributes="class python:test(repeat['student'].even(), 'even ajaxtd', 'odd ajaxtd')">
+                    <td><a href="id" tal:attributes="href string:${context/portal_url}/campus/students/${student/id}"
+                           tal:content="student/id"></a></td>    
+                    <td>
+                      <span tal:replace="student/name" />
+                    </td>    
+                    <td><span tal:replace="student/matric_no" /></td>   
+                    <td><span tal:replace="student/jamb_reg_no" /></td>
+                    <td tal:condition="options/co_view|nothing">
+                      <a href="id" 
+                         tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/clearance/external_clearance_edit_form"
+                         target="edit"
+                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
+                         >[view and change state]</a></td>
+                    <td tal:condition="options/ca_view|nothing">
+                      <a href="id" 
+                         tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/study_course/study_course/${student/level}/external_study_level_view"
+                         target="edit"
+                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
+                         >[view and validate course list]</a></td>
+                  </tr>
+                </span>
+              </span>
+            </table>
+            <tal:block condition="python:batch_info and batch_info['nb_pages'] > 1">
+              <div class="pageNavigationLayout">
+                <a tal:define="previous batch_info/previous"
+                   tal:condition="python:previous is not None"
+                   tal:attributes="href python:'%s?%s'%(request['URL'],
+                   mq(request.form, b_start=0))"
+                   >
+                (&lt;&lt;)</a>
+                <a tal:define="previous batch_info/previous"
+                   tal:condition="python:previous is not None"
+                   tal:attributes="href python:'%s?%s'%(request['URL'],
+                   mq(request.form, b_start=previous))"
+                   i18n:translate="batch_previous">Previous</a>
+                <tal:block repeat="page batch_info/pages">
+                  <tal:block condition="python:page != batch_info['start'] - 1">
+                    <a tal:attributes="href python:'%s?%s'%(request['URL'],
+                    mq(request.form, b_start=page))"
+                    tal:content="repeat/page/number">1</a>&nbsp;
+                  </tal:block>
+                  <tal:block condition="python:page == batch_info['start'] - 1">
+                    <span tal:content="string:${repeat/page/number}" />&nbsp;
+                  </tal:block>
+                </tal:block>
+                <a tal:define="next batch_info/next"
+                   tal:condition="python:next is not None"
+                   tal:attributes="href python:'%s?%s'%(request['URL'],
+                   mq(request.form, b_start=next))"
+                   i18n:translate="batch_next">Next</a>
+                <a tal:define="next batch_info/next;
+                last_page python:batch_info['pages'][-1]"
+                tal:condition="python:next is not None"
+                tal:attributes="href python:'%s?%s'%(request['URL'],
+                mq(request.form, b_start=last_page))"
+                >
+                (&gt;&gt;)</a>
+              </div>
+            </tal:block>
+          </span>
+        </span>
+      </span>
+    </metal:main>
+</metal:body>
+  
Index: WAeUP_SRP/uniben/waeup_custom/slip_template.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/slip_template.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/slip_template.pt	(revision 2847)
@@ -0,0 +1,109 @@
+<metal:block define-macro="master"
+  tal:define="showthirdcol showthirdcol|python:1;
+  emptybody emptybody|request/emptybody|nothing;
+  mtool here/portal_membership;
+
+  utool nocall:here/portal_url;
+  atool here/portal_actions;
+  ttool here/portal_trees;
+  wtool here/portal_workflow;
+  ptool here/portal_cpsportlets;
+  context_url python:here.getContextUrl(utool=utool);
+  here_url here/absolute_url;
+  base_url here/getBaseUrl;  
+  static_dir here/portal_properties/static_dir;
+  static_base_url string:${base_url}${static_dir};  
+  member mtool/getAuthenticatedMember;
+  isAnon mtool/isAnonymousUser;
+  isHomeless python:isAnon or member.getProperty('homeless', 0);
+  isHomeless python:(isHomeless == '0' and [0] or [isHomeless])[0];
+  actions python:atool.listFilteredActionsFor(here);
+  wf_state python:wtool.getInfoFor(here,'review_state','');
+  uname python: isAnon and 'Guest' or member.getUserName();
+  checkPerm nocall: mtool/checkPermission;
+  cpsmcat nocall:here/translation_service;
+  locale here/translation_service/getSelectedLanguage;
+  in_ws here/isInWorkspace;
+  waeup_skin here/get_waeup_skin;
+  ">
+  <metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+  </metal:block>
+  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+        lang="en">
+    <head>
+      <metal:block use-macro="here/header_lib_header/macros/header|here/header_lib/macros/header">
+        <metal:block fill-slot="base">
+          <metal:block define-slot="base">
+            <base href=""
+                  tal:attributes="href string:${here_url}/" />
+          </metal:block>
+        </metal:block>
+        <metal:block fill-slot="head_slot">
+          <metal:block define-slot="head_slot" />
+        </metal:block>
+        <metal:block fill-slot="style_slot">
+          <link rel="stylesheet" type="text/css" media="all"
+                tal:attributes="href string:${static_base_url}common.css" />
+          <metal:block define-slot="style_slot" />
+        </metal:block>
+        <metal:block fill-slot="javascript_head_slot">
+          <metal:block define-slot="javascript_head_slot" />
+        </metal:block>
+      </metal:block>
+      <link rel="icon"
+            href="ng.png"
+            tal:attributes="href string:${static_base_url}ng.png"
+            type="image/png" />
+      <link rel="shortcut icon"
+            href="icons/ng.png"
+            tal:attributes="href string:${static_base_url}ng.png"
+            type="image/png" />
+    </head>
+    <body tal:condition="emptybody"
+          style="margin: 0px;"
+          tal:attributes="onload here/getOnLoad|string:setFocus();">
+      <metal:block define-slot="body" />
+      <metal:block define-slot="main" />
+    </body>
+    <body tal:condition="not:emptybody"
+          style="margin: 0px;"
+          tal:attributes="onload here/getOnLoad|string:setFocus();">
+   
+    <table summary="Logo Block"
+           style="margin-left: auto; margin-right: auto; width: 100%;"
+           class="shapeNoBorder colorTransparent" cellpadding="0"
+           cellspacing="0">
+      <tbody>
+        <tr>
+          <td style="width: 20px;" valign="top"></td>
+          <td valign="top" style="width: 80px; padding: 0.5em; text-align: right;">
+            <img tal:attributes="src string:${static_base_url}logo_left.jpg"  alt="Logo"
+                     height="84" width="82" />
+          </td>
+          <td style="padding: 2em 0em 0em 0em; text-align: left;" valign="top">
+            <img tal:attributes="src string:${static_base_url}logo_right.gif" 
+                     alt="Logo" height="51" width="234" />
+          </td>
+          <td style="width: 20px;" valign="top"></td>
+        </tr>
+      </tbody>
+    </table>
+      
+    <table summary="Main Block" cellpadding="0" cellspacing="0" 
+           style="margin-left:auto;margin-right:auto;width:100%;">
+      <tr>
+        <td valign="top" style="width:700px">
+          <div style="padding:2em; text-align: left;" 
+               class="fontColordefaultfontcolors fontShapeTitleindex shapeAreaShape">
+                  <metal:block use-macro="here/generic_lib_portal_message/macros/portal_message" />
+                  <metal:block define-slot="header" />
+                  <metal:block define-slot="main" />
+                  <metal:block define-slot="sub" />
+          </div>
+        </td>
+      </tr>
+    </table>
+  </body>
+</html>
+</metal:block>
Index: WAeUP_SRP/uniben/waeup_custom/srp_anonymous_view.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/srp_anonymous_view.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/srp_anonymous_view.pt	(revision 2847)
@@ -0,0 +1,103 @@
+<metal:html>
+  <metal:body use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main">
+
+      <span tal:condition="python: getattr(context.campus.documents,'frontpage_doc',None)">
+          <div tal:define="doc python: context.campus.documents.frontpage_doc.getContent()"
+               tal:content="structure python:doc.wdrender()" />
+      </span> 
+
+      <span tal:condition="python: not getattr(context.campus.documents,'frontpage_doc',None)">
+
+      <h2>Welcome to the     
+      <br />New Student Registration Portal of the University of Benin, Nigeria</h2>
+             
+      <strong>This is the frontpage of Uniben's Student Registration Portal (SRP) which is part 
+                 of the West African e-University Project
+                 (<a href="" tal:attributes="href string:http://waeup.org">WAeUP</a>).</strong>
+      
+      <br /><br />
+      
+      <h2>Admission into Local/Part-Time Programmes 2006/2007</h2>
+      
+      <p><strong>INSTRUCTIONS FOR CHECKING SCREENING 
+                 TEST RESULTS AND ADMISSIONS</strong></p>
+      <br />
+      <ol>
+      <li>Click on 'View CEST Results' (CEST means Common Entrance Screening Test),</li> 
+      <li>enter your Application Number (No Scratch Card is required for this!),</li> 
+      <li>press the "Search" button, </li> 
+      <li>print your Result Slip.</li>
+      
+      <li>If you are admitted or if you are a <strong>Diploma or Non-Exam Programme</strong> applicant, purchase a N250-Admission-Checking and a 
+      N10500-Clearance Scratch Card from any of the following designated banks in Benin City:
+      
+      <br /><br />
+      UBA Plc, Uselu-Ugbowo Rd <br />
+      First Bank Plc, Ugbowo <br />
+      Unity Bank, Uniben <br />
+      Intercontinental Bank, Uniben <br />
+      Wema Bank, Akpakpava Road <br />
+      Zenith Bank Uselu <br /><br />
+      </li>
+      
+      <li>Click "Check Admission",</li> 
+      <li>enter your Registration Number and your Admission Checking PIN (prefix APP),</li> 
+      <li>press the "Check" button,</li> 
+      <li>print your Admission Slip,</li> 
+      <li>buy your Clearance Scratch Card,</li> 
+      <li>log in with your new Student Id (see Admission Slip)
+          and your Password (last 10 digits of your Admission Checking PIN),</li> 
+      <li>press the "Continue" button,</li> 
+      <li>check your email address and phone number,</li> 
+      <li>press the "Save & Continue" button,</li> 
+      <li>enter your Clearance PIN (prefix CLR) and</li> 
+      <li>press the "Start" button.</li> 
+      </ol>
+      <br />       
+      
+      
+      <p><strong>Notice:</strong> Clearance and Orientation for Part-Time and Diploma Students commences on 
+         resumption and ends exactly on <strong><font color="red">1st June 2007</font></strong>. 
+         Part-Time and Diploma Students must fill their 
+         Clearance/Elegibility forms online before 1st June.
+         Any breach of this directive, will result in forfeiture of the adminssion offer. 
+      </p>            
+      
+      <h2>Returning Students</h2>         
+      
+      
+      <ol>
+      <li> Simply click "Return 2006/2007", </li> 
+      <li> enter your Matriculation Number and either your firstname, middlename or lastname,</li> 
+      <li> press the "Search" button,</li> 
+      <li> press the "Continue to Login" button, </li> 
+      <li> check if you are the person indicated on the access data form,</li> 
+      <li> enter your email address and phone number,</li> 
+      <li> choose and verify your password (minimum size 5 characters including 1 digit),</li>
+      <li> tick the acknowledgement check box,</li>           
+      <li> press the "Save & First-time Login" button,</li> 
+      <li> print your Sessional Result Slip (it includes your new Student Id for further logins), </li> 
+      <li> edit your personal data record,</li> 
+      <li> book your accommodation,</li> 
+      <li> pay your school fee,</li>
+      <li> register your courses.</li>          
+      </ol>
+      
+      <br />
+      <p>If you have to register for <strong>previous sessions</strong> or are a 
+      <strong>temporary withdrawn</strong> student, click "Previous Sessions" 
+      instead of "Return 2006/2007".</p> 
+      
+      <p><strong>Notice:</strong> Full Time Students are expected to register their 
+      courses online on or before <strong><font color="red">6th June 2007</font></strong>.
+            
+            
+      </span>       
+      
+    </metal:main>
+  </metal:body>
+</metal:html>
+
+
+
Index: WAeUP_SRP/uniben/waeup_custom/srp_view.pt
===================================================================
--- WAeUP_SRP/uniben/waeup_custom/srp_view.pt	(revision 2847)
+++ WAeUP_SRP/uniben/waeup_custom/srp_view.pt	(revision 2847)
@@ -0,0 +1,21 @@
+<metal:html>
+  <metal:body use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main">
+    
+      <span tal:condition="python: getattr(context.campus.documents,'srp_home_doc',None)">
+          <div tal:define="doc python: context.campus.documents.srp_home_doc.getContent()"
+               tal:content="structure python:doc.wdrender()" />
+      </span>     
+    
+      <span tal:condition="python: not getattr(context.campus.documents,'srp_home_doc',None)">
+      
+        <h2>Welcome to the     
+          <br />Student Registration Portal of the University of Benin, Nigeria</h2>
+          <br />
+          You are logged in and viewing the portal's root folder. Please go to one of the sections above.     
+          
+       </span>
+       
+    </metal:main>
+  </metal:body>
+</metal:html>
