Index: main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/__init__.py
===================================================================
--- main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/__init__.py	(revision 12956)
+++ main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/__init__.py	(revision 12956)
@@ -0,0 +1,15 @@
+import os
+
+#from waeup.kofa.browser.layout import (
+#    KofaPage, KofaForm, KofaLayout, KofaDisplayFormPage, KofaEditFormPage,
+#    KofaAddFormPage, NullValidator)
+#from waeup.kofa.browser.pages import ContactAdminForm
+
+IMAGE_PATH = os.path.join(
+    os.path.dirname(__file__),
+    'static'
+    )
+
+#: Filesystem paths to default images
+DEFAULT_IMAGE_PATH = os.path.join(IMAGE_PATH, 'placeholder.jpg')
+DEFAULT_PASSPORT_IMAGE_PATH = os.path.join(IMAGE_PATH, 'placeholder.jpg')
Index: main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/pages.py
===================================================================
--- main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/pages.py	(revision 12956)
+++ main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/pages.py	(revision 12956)
@@ -0,0 +1,57 @@
+## $Id$
+##
+## Copyright (C) 2015 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+""" Viewing components for Kofa objects.
+"""
+
+from waeup.kofa.browser.pages import SourcesOverview
+from kofacustom.nigeria.interfaces import (
+    high_qual, high_grade, exam_types, LGASource)
+
+class NigeriaSourcesOverview(SourcesOverview):
+
+
+    def _set_high_qual(self):
+        vocab_terms = high_qual.by_value.values()
+        self.high_qual = sorted([(x.token, x.title,) for x in vocab_terms])
+        return
+
+    def _set_high_grade(self):
+        vocab_terms = high_grade.by_value.values()
+        self.high_grade = sorted([(x.token, x.title,) for x in vocab_terms])
+        return
+
+    def _set_exam_types(self):
+        vocab_terms = exam_types.by_value.values()
+        self.exam_types = sorted([(x.token, x.title,) for x in vocab_terms])
+        return
+
+    def _set_lgas(self):
+        lgasource = LGASource().factory
+        self.lgas = []
+        for key in lgasource.getValues():
+            title = lgasource.getTitle(key)
+            self.lgas.append((key, title))
+        return
+
+    def update(self):
+        super(NigeriaSourcesOverview, self).update()
+        self._set_high_qual()
+        self._set_high_grade()
+        self._set_exam_types()
+        self._set_lgas()
+        return
Index: main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/tests.py
===================================================================
--- main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/tests.py	(revision 12956)
+++ main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/tests.py	(revision 12956)
@@ -0,0 +1,30 @@
+## $Id$
+##
+## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+
+from waeup.kofa.browser.tests.test_browser import UniversitySetup
+from kofacustom.nigeria.testing import FunctionalLayer
+
+class SupplementaryBrowserTests(UniversitySetup):
+    # These are additional tests to browser.txt
+
+    layer = FunctionalLayer
+
+    def test_sources_overview(self):
+        self.browser.open('http://localhost/app/sources')
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertTrue('id="headingLGAS"' in self.browser.contents)
Index: main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/viewlets.py
===================================================================
--- main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/viewlets.py	(revision 12956)
+++ main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/browser/viewlets.py	(revision 12956)
@@ -0,0 +1,63 @@
+## $Id$
+##
+## Copyright (C) 2015 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+
+import grok
+from waeup.kofa.interfaces import IKofaUtils, IKofaObject
+from waeup.kofa.browser.viewlets import (
+    InstTypesSource, SourcesLeft, SourcesRight)
+from kofacustom.nigeria.interfaces import MessageFactory as _
+
+grok.context(IKofaObject) # Make IKofaObject the default context
+
+class LGASSource(InstTypesSource):
+    """Available lgas for the sources overview page.
+    """
+    grok.order(7)
+    name = 'LGAS'
+    source_name = 'lgas'
+    title = _('LGAs')
+
+class HigherQualSource(InstTypesSource):
+    """Available higher qualifications for the sources overview page.
+    """
+    grok.order(7)
+    grok.viewletmanager(SourcesRight)
+    column = 'right'
+    name = 'HighQual'
+    source_name = 'high_qual'
+    title = _('Higher Qualification')
+
+class HigherGradeSource(InstTypesSource):
+    """Available higher qualification grades for the sources overview page.
+    """
+    grok.order(8)
+    grok.viewletmanager(SourcesRight)
+    column = 'right'
+    name = 'HighGrade'
+    source_name = 'high_grade'
+    title = _('Higher Qualification Grades')
+
+class ExamTypesSource(InstTypesSource):
+    """Available  higher qualification exam types for the sources overview page.
+    """
+    grok.order(9)
+    grok.viewletmanager(SourcesRight)
+    column = 'right'
+    name = 'ExamTypes'
+    source_name = 'exam_types'
+    title = _('Higher Qualification Examination Types')
