Index: WAeUP_SRP/trunk/skins/waeup_academics/academics_document_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/academics_document_view.pt	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/academics_document_view.pt	(revision 556)
@@ -0,0 +1,21 @@
+<metal:html tal:define="info context/getDocumentInfo;
+            is_manager info/is_manager|nothing;"
+            >
+  <metal:body use-macro="here/waeup_content_master/macros/master">
+    <metal:block fill-slot="header">
+      <a href=""
+         tal:attributes="href string:${here/academicsParent}">
+        <img tal:attributes="src string:${here/portal_url}/arrow_up.gif"/>
+        Up one level
+      </a>
+      <h3 tal:content="here/title_or_id" />
+    </metal:block>
+    <metal:main fill-slot="main">
+      <span tal:omit-tag=""  
+            tal:content="structure python: info['doc'].render(layout_mode='view')" />
+      
+    </metal:main>
+    
+    <metal:sub fill-slot="sub"/>
+  </metal:body>
+</metal:html>
Index: WAeUP_SRP/trunk/skins/waeup_academics/academics_index.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/academics_index.py	(revision 555)
+++ WAeUP_SRP/trunk/skins/waeup_academics/academics_index.py	(revision 556)
@@ -33,6 +33,12 @@
     elif context.portal_type == 'Department':
         return context.department_index_view()
-##    elif context.portal_type == 'Course':
-##        return context.course_index_view()
+    elif context.portal_type == 'CoursesFolder':
+        return context.courses_index_view()
+    elif context.portal_type == 'Certificate':
+        return context.certificate_index_view()
+    elif context.portal_type == 'StudyLevel':
+        return context.level_index_view()
+    elif context.portal_type in ('CertificateCourse','Course'):
+        return context.academics_document_view()
     return redirect("%s/academics_contents" % context.absolute_url())
 if isStudent:
Index: WAeUP_SRP/trunk/skins/waeup_academics/certificate_index_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/certificate_index_view.pt	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/certificate_index_view.pt	(revision 556)
@@ -0,0 +1,67 @@
+<metal:html tal:define="info context/getCertificateInfo;
+            is_manager info/is_manager|nothing;"
+            >
+  <metal:body use-macro="here/waeup_content_master/macros/master">
+    <metal:block fill-slot="header">
+      <a href=""
+         tal:attributes="href string:${here/academicsParent}">
+        <img tal:attributes="src string:${here/portal_url}/arrow_up.gif"/>
+        Up one level
+      </a>
+      <h3 tal:content="here/title_or_id" />
+      <div tal:condition="python:0" tal:content="info/container_path"/>
+    </metal:block>
+    <metal:main fill-slot="main">
+      <span tal:omit-tag=""  
+            tal:content="structure python: info['doc'].render(layout_mode='view')" />
+      
+      <form action="" method="post" class="group"
+            tal:attributes="action info/action"
+            tal:define="rows python: info['items'];"
+            >
+        <span tal:condition="python: 0" tal:content="structure rows" />
+        <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">      
+          <tr tal:repeat="row rows"
+            tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+            <td align="left" valign="middle" style="width: 5px;" 
+                tal:condition="is_manager">
+              <input type="checkbox" name="ids:list" value="" id="" class="noborder"
+                     tal:condition="is_manager"
+                     tal:define="id row/id"
+                     tal:attributes="value id;
+                     id python:'cb_' + id;
+                     checked python:id in info['choosen_ids'];" 
+                     />
+            </td>
+            <td><a href="view" tal:attributes="href string:${row/url}">
+              <strong tal:content="row/title" /></a> </td>
+          </tr>
+        </table>
+        <table width="100%" cellspacing="0" cellpadding="2"
+               summary="contents of the folder"
+               class="folderButtons">
+          <tr>
+            <td align="left" valign="top" rowspan="3"></td>
+            <td align="left" valign="top">
+              <span tal:condition="is_manager">
+                <input type="button" value="button_select_all" class="context"
+                       onclick="someJavaScriptFunctionThatWillBeReplaced"
+                       i18n:attributes="value"
+                       tal:attributes="onclick python:'toggleSelect(this, \'%s\', \'%s\')'
+                       % (cpsmcat('button_select_all'), cpsmcat('button_deselect_all'))"
+                       />
+                <input type="submit" name="folder_delete:method" value="button_delete"
+                       class="destructive" i18n:attributes="value"
+                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
+                       (cpsmcat('description_confirm_delete'), )" 
+                       />
+              </span>
+            </td>
+          </tr>
+        </table>
+      </form>
+    </metal:main>
+    
+    <metal:sub fill-slot="sub"/>
+  </metal:body>
+</metal:html>
Index: WAeUP_SRP/trunk/skins/waeup_academics/courses_index_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/courses_index_view.pt	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/courses_index_view.pt	(revision 556)
@@ -0,0 +1,145 @@
+<metal:html tal:define="info context/getCoursesInfo;
+            is_manager info/is_manager|nothing;"
+            >
+  <metal:body use-macro="here/waeup_content_master/macros/master">
+    <metal:block fill-slot="header">
+      <a href=""
+         tal:attributes="href string:${here/academicsParent}">
+        <img tal:attributes="src string:${here/portal_url}/arrow_up.gif"/>
+        Up one level
+      </a>
+      <h3 tal:content="here/title_or_id">
+        Page Title
+      </h3>
+      <div tal:condition="python:0" tal:content="info/container_path"/>
+      <div tal:condition="python:0" tal:content="info/dep_id"/>
+    </metal:block>
+    <metal:main fill-slot="main" tal:condition="python: 1">
+      <span tal:content="structure python: info['doc'].render(layout_mode='view')" 
+            tal:omit-tag=""/>
+        <span tal:define="items python: info['courses'];
+        columns python:3;
+        items_per_page python:50;
+        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=""
+        >
+          <form action="" method="post" class="group"
+                tal:attributes="action info/action"
+                >
+            <tal:block tal:condition="python: 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>
+            <span tal:condition="python: 0" tal:content="structure rows" />
+            <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">      
+            <span tal:repeat="rows batches" tal:omit-tag="">
+              <tr tal:repeat="row rows"
+                  tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+                <td align="left" valign="middle" style="width: 5px;" 
+                    tal:condition="is_manager">
+                  <input type="checkbox" name="ids:list" value="" id="" class="noborder"
+                         tal:condition="is_manager"
+                         tal:define="id row/id"
+                         tal:attributes="value id;
+                         id python:'cb_' + id;
+                         checked python:id in info['choosen_ids'];" 
+                         />
+                </td>
+                <td><a href="view" tal:attributes="href string:${row/url}">
+                    <strong tal:content="row/title" /></a> </td>
+                <td tal:content="row/id"> </td>
+                <td><a href="edit" tal:attributes="href string:${row/url}/cpsdocument_edit_form">[edit]</a></td>
+              </tr>
+            </span>
+            </table>
+            <table width="100%" cellspacing="0" cellpadding="2"
+                   summary="contents of the folder"
+                   class="folderButtons">
+              <tr>
+                <td align="left" valign="top" rowspan="3"></td>
+                <td align="left" valign="top">
+                  <span tal:condition="is_manager">
+                    <input type="button" value="button_select_all" class="context"
+                           onclick="someJavaScriptFunctionThatWillBeReplaced"
+                           i18n:attributes="value"
+                           tal:attributes="onclick python:'toggleSelect(this, \'%s\', \'%s\')'
+                           % (cpsmcat('button_select_all'), cpsmcat('button_deselect_all'))"
+                           />
+                    <input type="submit" name="approve_checked:method"
+                           class="context" value="Approve" />
+                    <input type="submit" name="retract_checked:method"
+                           class="context" value="Retract" />
+                    <input type="submit" name="folder_delete:method" value="button_delete"
+                           class="destructive" i18n:attributes="value"
+                           tal:attributes="onclick python:'return window.confirm(\'%s\')' %
+                           (cpsmcat('description_confirm_delete'), )" 
+                           />
+                    <input tal:condition="python: context.portal_type not in ('Semester','Certificate')"
+                           type="submit" name="id_rename_form:method"
+                           class="context" value="Change Object ID" i18n:attributes="value" 
+                           />
+                  </span>
+                </td>
+              </tr>
+            </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>
+          
+        </form>
+        </span>
+      </metal:main>
+      
+    <metal:sub fill-slot="sub"/>
+  </metal:body>
+</metal:html>
Index: WAeUP_SRP/trunk/skins/waeup_academics/department_index_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/department_index_view.pt	(revision 555)
+++ WAeUP_SRP/trunk/skins/waeup_academics/department_index_view.pt	(revision 556)
@@ -9,7 +9,5 @@
         Up one level
       </a>
-      <h1 tal:content="here/title_or_id">
-        Page Title
-      </h1>
+      <h3 tal:content="here/title_or_id" />
       <div tal:condition="nothing" tal:content="info/container_path"/>
     </metal:block>
@@ -34,22 +32,12 @@
           <tr tal:repeat="row certs"
             tal:attributes="class python:test(repeat['row'].odd(), 'even ajaxtd', 'odd ajaxtd')">
-            <td align="left" valign="middle" style="width: 5px;" 
-                tal:condition="is_manager">
-              <input type="checkbox" name="ids:list" value="" id="" class="noborder"
-                     tal:condition="is_manager"
-                     tal:define="id row/id"
-                     tal:attributes="value id;
-                     id python:'cb_' + id;
-                     checked python:id in info['choosen_ids'];" 
-                     />
+            <td  align="left" valign="middle" style="width: 5px;">
             </td>
             <td><a href="view" tal:attributes="href string:${row/url}">
-              <strong tal:content="row/title" /></a> </td>
+              <span tal:content="row/title" /></a> </td>
             <td tal:content="row/id"> </td>
-            <td><a href="edit" tal:attributes="href string:${row/url}/cpsdocument_edit_form">[edit]</a></td>
           </tr>
         </table>
-        <table width="100%" cellspacing="0" cellpadding="2"
-               summary="contents of the folder"
+        <table tal:condition="nothing" width="100%" cellspacing="0" cellpadding="2"
                class="folderButtons">
           <tr>
Index: WAeUP_SRP/trunk/skins/waeup_academics/faculty_index_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/faculty_index_view.pt	(revision 555)
+++ WAeUP_SRP/trunk/skins/waeup_academics/faculty_index_view.pt	(revision 556)
@@ -9,7 +9,5 @@
         Up one level
       </a>
-      <h1 tal:content="here/title_or_id">
-        Page Title
-      </h1>
+      <h3 tal:content="here/title_or_id" />
       <div tal:condition="python:0" tal:content="info/container_path"/>
     </metal:block>
Index: WAeUP_SRP/trunk/skins/waeup_academics/getCertificateInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/getCertificateInfo.py	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/getCertificateInfo.py	(revision 556)
@@ -0,0 +1,39 @@
+## Script (Python) "cpsdocument_edit"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $
+"""
+return Info about a Certificate
+"""
+request = context.REQUEST
+
+wf = context.portal_workflow
+mtool = context.portal_membership
+member = mtool.getAuthenticatedMember()
+path_info = request.get('PATH_INFO').split('/')
+
+info = {}
+member_id = str(member)
+roles = member.getRoles()
+info['is_manager'] = 'Manager' in roles or 'SectionManager' in roles
+info['is_student'] = 'Student' in roles 
+info['action'] = "%s/academics_index_view" % context.campus.absolute_url()
+info['choosen_ids'] = request.get('ids',[])
+info['doc'] = context.getContent()
+items = []
+levels = context.objectValues()
+for l in levels:
+    row = {}
+    ld = l.getContent()
+    row['id'] = l.getId()
+    row['title'] = ld.Title()
+    row['url'] = l.absolute_url()
+    items.append(row)
+info['items'] = items
+return info
Index: WAeUP_SRP/trunk/skins/waeup_academics/getCoursesInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/getCoursesInfo.py	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/getCoursesInfo.py	(revision 556)
@@ -0,0 +1,46 @@
+## Script (Python) "cpsdocument_edit"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $
+"""
+return Info about the Faculties
+"""
+request = context.REQUEST
+
+wf = context.portal_workflow
+mtool = context.portal_membership
+member = mtool.getAuthenticatedMember()
+path_info = request.get('PATH_INFO').split('/')
+
+info = {}
+member_id = str(member)
+dep_id = request.get('PATH_TRANSLATED').split('/')[5]
+roles = member.getRoles()
+info['is_manager'] = 'Manager' in roles or 'SectionManager' in roles
+info['is_student'] = 'Student' in roles 
+info['action'] = "%s/faculty_index_view" % context.absolute_url()
+info['choosen_ids'] = request.get('ids',[])
+info['doc'] = context.getContent()
+brain = context.portal_catalog(meta_type="Department",id = dep_id)[-1]
+cp = brain.getPath()
+info['container_path'] = cp
+info['dep_id'] = dep_id
+
+res = context.portal_catalog(container_path="%s/courses" % cp)
+items = []
+for r in res:
+    row = {}
+    ro = r.getObject()
+    rd = ro.getContent()
+    row['id'] = r.getId
+    row['title'] = rd.Title()
+    row['url'] = ro.absolute_url()
+    items.append(row)
+info['courses'] = items
+return info
Index: WAeUP_SRP/trunk/skins/waeup_academics/getDocumentInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/getDocumentInfo.py	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/getDocumentInfo.py	(revision 556)
@@ -0,0 +1,27 @@
+## Script (Python) "cpsdocument_edit"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $
+"""
+return Info about the Faculties
+"""
+request = context.REQUEST
+
+wf = context.portal_workflow
+mtool = context.portal_membership
+member = mtool.getAuthenticatedMember()
+path_info = request.get('PATH_INFO').split('/')
+
+info = {}
+member_id = str(member)
+roles = member.getRoles()
+info['is_manager'] = 'Manager' in roles or 'SectionManager' in roles
+info['is_student'] = 'Student' in roles 
+info['doc'] = context.getContent()
+return info
Index: WAeUP_SRP/trunk/skins/waeup_academics/getLevelInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/getLevelInfo.py	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/getLevelInfo.py	(revision 556)
@@ -0,0 +1,53 @@
+## Script (Python) "cpsdocument_edit"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $
+"""
+return Info about the Faculties
+"""
+request = context.REQUEST
+
+wf = context.portal_workflow
+mtool = context.portal_membership
+member = mtool.getAuthenticatedMember()
+path_info = request.get('PATH_INFO').split('/')
+
+info = {}
+member_id = str(member)
+pt = request.get('PATH_TRANSLATED').split('/')
+dep_id = pt[5]
+cert_id = pt[7]
+level_id = pt[8]
+roles = member.getRoles()
+info['is_manager'] = 'Manager' in roles or 'SectionManager' in roles
+info['is_student'] = 'Student' in roles 
+info['action'] = "%s/faculty_index_view" % context.absolute_url()
+info['choosen_ids'] = request.get('ids',[])
+info['doc'] = context.getContent()
+brain = context.portal_catalog(meta_type="Certificate",id = cert_id)[-1]
+cp = brain.getPath()
+info['container_path'] = cp
+info['dep_id'] = dep_id
+info['cert_id'] = cert_id
+
+for sem in ('first','second'):
+    res = context.portal_catalog(container_path="%s/%s/%s" % (cp,level_id,sem))
+    items = []
+    for r in res:
+        row = {}
+        ro = r.getObject()
+        rd = ro.getContent()
+        row['id'] = r.getId
+        row['title'] = rd.Title()
+        row['core'] = rd.core_or_elective 
+        row['semester'] = sem
+        row['url'] = ro.absolute_url()
+        items.append(row)
+    info[sem] = items
+return info
Index: WAeUP_SRP/trunk/skins/waeup_academics/level_index_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/level_index_view.pt	(revision 556)
+++ WAeUP_SRP/trunk/skins/waeup_academics/level_index_view.pt	(revision 556)
@@ -0,0 +1,78 @@
+<metal:html tal:define="info context/getLevelInfo;
+            is_manager info/is_manager|nothing;"
+            >
+  <metal:body use-macro="here/waeup_content_master/macros/master">
+    <metal:block fill-slot="header">
+      <a href=""
+         tal:attributes="href string:${here/academicsParent}">
+        <img tal:attributes="src string:${here/portal_url}/arrow_up.gif"/>
+        Up one level
+      </a>
+      <h3 tal:content="here/title_or_id" />
+      <div tal:condition="python:0" tal:content="info/container_path"/>
+      <div tal:condition="python:0" tal:content="info/dep_id"/>
+      <div tal:condition="python:0" tal:content="info/cert_id"/>
+    </metal:block>
+    <metal:main fill-slot="main" tal:condition="python:1">
+      <span tal:omit-tag=""  
+            tal:content="structure python: info['doc'].render(layout_mode='view')" />
+      
+      <form action="" method="post" class="group"
+            tal:attributes="action info/action"
+            >
+        <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">      
+          <span tal:repeat="sem python:('first','second')">
+            <tr><th colspan="3" tal:content="python: test(sem == 'first','First Semester', 'Second Semester')" />
+            <tr tal:repeat="row python: info[sem]"
+                tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+              <td align="left" valign="middle" style="width: 5px;" 
+                  tal:condition="is_manager">
+                <input type="checkbox" name="ids:list" value="" id="" class="noborder"
+                       tal:condition="is_manager"
+                       tal:define="id row/id"
+                       tal:attributes="value id;
+                       id python:'cb_' + id;
+                       checked python:id in info['choosen_ids'];" 
+                       />
+              </td>
+              <td><a href="view" tal:attributes="href string:${row/url}">
+                  <strong tal:content="row/title" /></a> </td>
+              <td tal:content="python: test(row['core'],'core','elective')"></td>
+            </tr>
+          </span>
+        </table>
+        <table width="100%" cellspacing="0" cellpadding="2"
+               class="folderButtons">
+          <tr>
+            <td align="left" valign="top" rowspan="3"></td>
+            <td align="left" valign="top">
+              <span tal:condition="is_manager">
+                <input type="button" value="button_select_all" class="context"
+                       onclick="someJavaScriptFunctionThatWillBeReplaced"
+                       i18n:attributes="value"
+                       tal:attributes="onclick python:'toggleSelect(this, \'%s\', \'%s\')'
+                       % (cpsmcat('button_select_all'), cpsmcat('button_deselect_all'))"
+                       />
+                <input type="submit" name="approve_checked:method"
+                       class="context" value="Approve" />
+                <input type="submit" name="retract_checked:method"
+                       class="context" value="Retract" />
+                <input type="submit" name="folder_delete:method" value="button_delete"
+                       class="destructive" i18n:attributes="value"
+                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
+                       (cpsmcat('description_confirm_delete'), )" 
+                       />
+                <input tal:condition="python: context.portal_type not in ('Semester','Certificate')"
+                       type="submit" name="id_rename_form:method"
+                       class="context" value="Change Object ID" i18n:attributes="value" 
+                       />
+              </span>
+            </td>
+          </tr>
+        </table>
+      </form>
+    </metal:main>
+    
+    <metal:sub fill-slot="sub"/>
+  </metal:body>
+</metal:html>
