Index: /WAeUP_SRP/base/WAeUPTables.py
===================================================================
--- /WAeUP_SRP/base/WAeUPTables.py	(revision 2613)
+++ /WAeUP_SRP/base/WAeUPTables.py	(revision 2614)
@@ -1370,12 +1370,18 @@
             id = code = d['id'] = brain.code
             d['code'] = code
-            d['title'] = self.courses_catalog.evalAdvancedQuery(Eq('code',code))[0].title
+            course = self.courses_catalog.evalAdvancedQuery(Eq('code',code))[0]
+            d['title'] = course.title
+
+            # The courses_catalog contains strings and integers in its semester field.
+            # Maybe this can be fixed by reindexing the catalog. The schema of course says 'CPS Int Field'.
+            d['semester'] = str(course.semester)
             if brain.carry_over:
                 d['coe'] = 'Carry-Over'
                 carry_overs.append(d)
             else:
-                if brain.semester == '1':
+                if d['semester'] == '1':
                     normal1.append(d)
-                elif brain.semester == '2':
+
+                elif d['semester'] == '2':
                     normal2.append(d)
                 else:
Index: /WAeUP_SRP/base/skins/waeup_academics/getLevelInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_academics/getLevelInfo.py	(revision 2613)
+++ /WAeUP_SRP/base/skins/waeup_academics/getLevelInfo.py	(revision 2614)
@@ -32,46 +32,16 @@
 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
 
-# res = context.portal_catalog(meta_type="CertificateCourse", container_path="%s/%s" % (cp,level_id))
-# first = []
-# second = []
-# for r in res:
-#     row = {}
-#     ro = r.getObject()
-#     rd = ro.getContent()
-#     course_id = r.getId 
-#     row = context.getCourseInfo(course_id)
-#     row['id'] = course_id
-#     # row['title'] = rd.Title()
-#     # row['semester'] = rd.semester
-#     row['core'] = rd.core_or_elective
-#     row['url'] = ro.absolute_url()
-#     row['review_state'] = wf.getInfoFor(ro,'review_state','None')
-#     editable = row['is_editable'] = mtool.checkPermission('Modify portal content', ro)
-#     if editable:
-#         row['real_course_path'] = "%s/%s/%s/courses/%s" % (academics_path,
-#                                                            row['faculty'],
-#                                                            row['department'],
-#                                                            course_id)
-#     if row['semester'] == 1:
-#         first.append(row)
-#     else:
-#         second.append(row)
+
 first = []
 second = []
+combined = []
 for course_id,course in context.objectItems():
     row = {}
-    # ro = r.getObject()
     course_doc = course.getContent()
-    # course_id = r.getId 
     row = context.getCourseInfo(course_id)
     row['id'] = course_id
-    # row['title'] = course_doc.Title()
-    # row['semester'] = course_doc.semester
     row['core'] = course_doc.core_or_elective
     row['url'] = course.absolute_url()
@@ -83,11 +53,19 @@
                                                            row['department'],
                                                            course_id)
-    if row['semester'] == 1:
+
+    # The course objects contain strings (old schema) and integers (new schema) as semester values
+    row['semester'] = str(row['semester'])
+    if row['semester'] == '1':
         first.append(row)
+    elif row['semester'] == '2':
+        second.append(row)        
     else:
-        second.append(row)
+        combined.append(row)
 first.sort()
 second.sort()
+combined.sort()
 info['first'] = first
 info['second'] = second
+info['combined'] = combined
+
 return info
Index: /WAeUP_SRP/base/skins/waeup_academics/level_view.pt
===================================================================
--- /WAeUP_SRP/base/skins/waeup_academics/level_view.pt	(revision 2613)
+++ /WAeUP_SRP/base/skins/waeup_academics/level_view.pt	(revision 2614)
@@ -23,5 +23,5 @@
         <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">      
           <span tal:repeat="sem python:('first','second')">
-            <th colspan="3" tal:content="python: test(sem == 'first','First Semester', 'Second Semester')" />
+            <tr><th colspan="3" tal:content="python: test(sem == 'first','First Semester', 'Second Semester')" /></tr>
             <tr tal:repeat="row python: info[sem]"
                 tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
@@ -49,10 +49,49 @@
                     </a> 
                 <a tal:condition="row/real_course_path|nothing" 
-                   href="edit" tal:attributes="href string:${row/real_course_path}">
-                    [goto course]
+                   href="edit" tal:attributes="href string:${row/real_course_path}/external_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')">
+                   [edit course]
                     </a> 
                 </td>
-              </tr>
+            </tr>
+              
             </span>
+              
+            <tr><th colspan="3" tal:condition="info/combined"> Combined</th></tr>
+            <tr tal:condition="info/combined" tal:repeat="row info/combined"
+                tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+              <td align="left" valign="middle" style="width: 5px;" 
+                  tal:condition="is_so">
+                <input type="checkbox" name="ids:list" value="" id="" class="noborder"
+                       tal:condition="is_so"
+                       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 tal:content="python: test(row['core'],'core','elective')"></td>
+                <td tal:condition="row/is_editable" tal:content="row/review_state"> </td>
+                <td> 
+                <a tal:condition="row/is_editable"
+                    href="edit" tal:attributes="href string:${row/url}/external_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')">
+                    [edit]
+                    </a> 
+                <a tal:condition="row/real_course_path|nothing" 
+                   href="edit" tal:attributes="href string:${row/real_course_path}/external_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')">
+                   [edit course]
+                   </a> 
+                </td>
+             </tr>
+              
+
           </table>
         <table width="100%" cellspacing="0" cellpadding="2"
Index: /WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py	(revision 2613)
+++ /WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py	(revision 2614)
@@ -37,30 +37,4 @@
 import logging
 logger = logging.getLogger('Skins.getStudyLevelInfo')
-
-#def calculateGPA():
-#    """calculate the gpa"""
-#    sum = 0
-#    course_count = 0
-#    for sc in context.objectValues():
-#        result = sc.getContent()
-#        if not result.grade:
-#            continue
-#        res = context.portal_catalog({'meta_type': 'Course',
-#                                      'id': sc.aq_parent.id})
-#        if len(res) < 1:
-#            continue
-#        course = res[0].getObject().getContent()
-#    if course_count:
-#        return sum/course_count
-#    return 0.0
-
-#def cmp_semester_id(a,b):
-#    s1 = "%(semester)s%(id)s" % a
-#    s2 = "%(semester)s%(id)s" % b
-#    if s1 == s2:
-#        return 0
-#    if s1 > s2:
-#        return 1
-#    return -1
 
 student_id = context.getStudentId()
Index: /WAeUP_SRP/base/skins/waeup_student/study_level_view.pt
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/study_level_view.pt	(revision 2613)
+++ /WAeUP_SRP/base/skins/waeup_student/study_level_view.pt	(revision 2614)
@@ -77,5 +77,5 @@
         <span tal:repeat="sem python:('1','2')">       
                     
-        <th colspan="3" tal:content="python: test(sem == '1','First Semester', 'Second Semester')" />                
+        <tr><th colspan="3" tal:content="python: test(sem == '1','First Semester', 'Second Semester')" /></tr>                
         <tr tal:repeat="row python: test(sem == '1',info['normal1'],info['normal2'])"
             tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
@@ -103,7 +103,8 @@
           </td>          
         </tr>
-        
-        
-        <th colspan="3" tal:condition="info/normal3"> Combined</th>                
+
+        </span>        
+        
+        <tr><th colspan="3" tal:condition="info/normal3"> Combined</th></tr>                
         <tr tal:condition="info/normal3" tal:repeat="row info/normal3"
             tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
@@ -134,5 +135,5 @@
         
         
-        </span>
+
 
         <tr>
