import grok
from zope.interface import Interface
from waeup.sirp.interfaces import IWAeUPObject

grok.context(IWAeUPObject) # Make IWAeUPObject the default context
grok.templatedir('browser_templates')

class StudentManageSidebar(grok.ViewletManager):
    grok.name('left_studentmanage')

class StudentManageLink(grok.Viewlet):
    """A link displayed in the student box which shows up for StudentNavigation
    objects.

    """
    grok.baseclass()
    grok.viewletmanager(StudentManageSidebar)
    grok.context(IWAeUPObject)
    grok.view(Interface)
    grok.order(5)
    grok.require('waeup.viewStudent')

    link = 'index'
    text = u'Base Data'

    def render(self):
        url = self.view.url(self.context.getStudent(), self.link)
        return u'<div class="portlet"><a href="%s">%s</a></div>' % (
                url, self.text)

class StudentManageBaseLink(StudentManageLink):
    grok.order(1)
    link = 'index'
    text = u'Base Data'

class StudentManageClearanceLink(StudentManageLink):
    grok.order(2)
    link = 'view_clearance'
    text = u'Clearance Data'

class StudentManagePersonalLink(StudentManageLink):
    grok.order(2)
    link = 'view_personal'
    text = u'Personal Data'

class StudentManageStudyCourseLink(StudentManageLink):
    grok.order(3)
    link = 'studycourse'
    text = u'Study Course'

class StudentManagePaymentsLink(StudentManageLink):
    grok.order(4)
    link = 'payments'
    text = u'Payments'

class StudentManageAccommodationLink(StudentManageLink):
    grok.order(5)
    link = 'accommodation'
    text = u'Accommodation Data'

class StudentManageHistoryLink(StudentManageLink):
    grok.order(6)
    link = 'history'
    text = u'History'


class StudentMenu(grok.ViewletManager):
    grok.name('top_student')

class StudentLink(grok.Viewlet):
    """A link displayed in the student box which shows up for StudentNavigation
    objects.

    """
    grok.baseclass()
    grok.viewletmanager(StudentMenu)
    grok.context(IWAeUPObject)
    grok.view(Interface)
    grok.order(5)
    grok.require('waeup.viewStudent')
    template = grok.PageTemplateFile('browser_templates/plainactionbutton.pt')

    link = 'index'
    text = u'Base Data'

    @property
    def alt(self):
        """Alternative text for icon.
        """
        return self.text

    @property
    def target_url(self):
        """Get a URL to the target...
        """
        return self.view.url(self.context.getStudent(), self.link)

class StudentBaseLink(StudentLink):
    grok.order(1)
    link = 'index'
    text = u'Base Data'

class StudentClearanceLink(StudentLink):
    grok.order(2)
    link = 'view_clearance'
    text = u'Clearance Data'

class StudentPersonalLink(StudentLink):
    grok.order(2)
    link = 'view_personal'
    text = u'Personal Data'

class StudentStudyCourseLink(StudentLink):
    grok.order(3)
    link = 'studycourse'
    text = u'Study Course'

class StudentPaymentsLink(StudentLink):
    grok.order(4)
    link = 'payments'
    text = u'Payments'

class StudentAccommodationLink(StudentLink):
    grok.order(5)
    link = 'accommodation'
    text = u'Accommodation'

class StudentHistoryLink(StudentLink):
    grok.order(6)
    link = 'history'
    text = u'History'

class PrimaryStudentNavManager(grok.ViewletManager):
    """Viewlet manager for the primary navigation tab.
    """
    grok.name('primary_nav_student')

class PrimaryStudentNavTab(grok.Viewlet):
    """Base for primary student nav tabs.
    """
    grok.baseclass()
    grok.viewletmanager(PrimaryStudentNavManager)
    grok.template('primarynavtab')
    grok.order(1)
    grok.require('waeup.View')
    pnav = 0 
    tab_title = u'Some Text'

    @property
    def link_target(self):
        return self.view.application_url()

    @property
    def active(self):
        view_pnav = getattr(self.view, 'pnav', 0)
        if view_pnav == self.pnav:
            return 'active'
        return ''

class HomeTab(PrimaryStudentNavTab):
    """Home-tab in primary navigation.
    """
    grok.order(1)
    grok.require('waeup.Public')
    pnav = 0
    tab_title = u'Home'

class ProspectusTab(PrimaryStudentNavTab):
    """Faculties-tab in primary navigation.
    """
    grok.order(2)
    grok.require('waeup.View')
    pnav = 1
    tab_title = u'Prospectus'

    @property
    def link_target(self):
        return self.view.application_url('faculties')

class MyDataTab(PrimaryStudentNavTab):
    """MyData-tab in primary navigation.
    """
    grok.order(3)
    grok.require('waeup.Public')
    pnav = 4
    tab_title = u'My Data'

    @property
    def link_target(self):
        rel_link = '/students/%s' % self.request.principal.id
        return self.view.application_url() + rel_link