source: main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py @ 6717

Last change on this file since 6717 was 6687, checked in by Henrik Bettermann, 13 years ago

Tweak site layout for students (experimental!). Students should see only a one-column.

  • Property svn:keywords set to Id
File size: 4.6 KB
RevLine 
[6642]1import grok
2from zope.interface import Interface
3from waeup.sirp.interfaces import IWAeUPObject
4
5grok.context(IWAeUPObject) # Make IWAeUPObject the default context
[6687]6grok.templatedir('browser_templates')
[6642]7
[6687]8class StudentManageSidebar(grok.ViewletManager):
9    grok.name('left_studentmanage')
[6642]10
[6687]11class StudentManageLink(grok.Viewlet):
[6660]12    """A link displayed in the student box which shows up for StudentNavigation
[6642]13    objects.
14
15    """
16    grok.baseclass()
[6687]17    grok.viewletmanager(StudentManageSidebar)
[6642]18    grok.context(IWAeUPObject)
19    grok.view(Interface)
20    grok.order(5)
[6660]21    grok.require('waeup.viewStudent')
[6642]22
23    link = 'index'
24    text = u'Base Data'
25
26    def render(self):
27        url = self.view.url(self.context.getStudent(), self.link)
28        return u'<div class="portlet"><a href="%s">%s</a></div>' % (
29                url, self.text)
30
[6687]31class StudentManageBaseLink(StudentManageLink):
32    grok.order(1)
33    link = 'index'
34    text = u'Base Data'
35
36class StudentManageClearanceLink(StudentManageLink):
37    grok.order(2)
38    link = 'view_clearance'
39    text = u'Clearance Data'
40
41class StudentManagePersonalLink(StudentManageLink):
42    grok.order(2)
43    link = 'view_personal'
44    text = u'Personal Data'
45
46class StudentManageStudyCourseLink(StudentManageLink):
47    grok.order(3)
48    link = 'studycourse'
49    text = u'Study Course'
50
51class StudentManagePaymentsLink(StudentManageLink):
52    grok.order(4)
53    link = 'payments'
54    text = u'Payments'
55
56class StudentManageAccommodationLink(StudentManageLink):
57    grok.order(5)
58    link = 'accommodation'
59    text = u'Accommodation Data'
60
61class StudentManageHistoryLink(StudentManageLink):
62    grok.order(6)
63    link = 'history'
64    text = u'History'
65
66
67class StudentMenu(grok.ViewletManager):
68    grok.name('top_student')
69
70class StudentLink(grok.Viewlet):
71    """A link displayed in the student box which shows up for StudentNavigation
72    objects.
73
74    """
75    grok.baseclass()
76    grok.viewletmanager(StudentMenu)
77    grok.context(IWAeUPObject)
78    grok.view(Interface)
79    grok.order(5)
80    grok.require('waeup.viewStudent')
81    template = grok.PageTemplateFile('browser_templates/plainactionbutton.pt')
82
83    link = 'index'
84    text = u'Base Data'
85
86    @property
87    def alt(self):
88        """Alternative text for icon.
89        """
90        return self.text
91
92    @property
93    def target_url(self):
94        """Get a URL to the target...
95        """
96        return self.view.url(self.context.getStudent(), self.link)
97
[6642]98class StudentBaseLink(StudentLink):
99    grok.order(1)
100    link = 'index'
101    text = u'Base Data'
102
103class StudentClearanceLink(StudentLink):
104    grok.order(2)
105    link = 'view_clearance'
106    text = u'Clearance Data'
107
108class StudentPersonalLink(StudentLink):
109    grok.order(2)
110    link = 'view_personal'
111    text = u'Personal Data'
112
113class StudentStudyCourseLink(StudentLink):
114    grok.order(3)
115    link = 'studycourse'
116    text = u'Study Course'
117
118class StudentPaymentsLink(StudentLink):
119    grok.order(4)
120    link = 'payments'
121    text = u'Payments'
122
123class StudentAccommodationLink(StudentLink):
124    grok.order(5)
125    link = 'accommodation'
[6687]126    text = u'Accommodation'
[6642]127
128class StudentHistoryLink(StudentLink):
129    grok.order(6)
130    link = 'history'
131    text = u'History'
[6687]132
133class PrimaryStudentNavManager(grok.ViewletManager):
134    """Viewlet manager for the primary navigation tab.
135    """
136    grok.name('primary_nav_student')
137
138class PrimaryStudentNavTab(grok.Viewlet):
139    """Base for primary student nav tabs.
140    """
141    grok.baseclass()
142    grok.viewletmanager(PrimaryStudentNavManager)
143    grok.template('primarynavtab')
144    grok.order(1)
145    grok.require('waeup.View')
146    pnav = 0
147    tab_title = u'Some Text'
148
149    @property
150    def link_target(self):
151        return self.view.application_url()
152
153    @property
154    def active(self):
155        view_pnav = getattr(self.view, 'pnav', 0)
156        if view_pnav == self.pnav:
157            return 'active'
158        return ''
159
160class HomeTab(PrimaryStudentNavTab):
161    """Home-tab in primary navigation.
162    """
163    grok.order(1)
164    grok.require('waeup.Public')
165    pnav = 0
166    tab_title = u'Home'
167
168class ProspectusTab(PrimaryStudentNavTab):
169    """Faculties-tab in primary navigation.
170    """
171    grok.order(2)
172    grok.require('waeup.View')
173    pnav = 1
174    tab_title = u'Prospectus'
175
176    @property
177    def link_target(self):
178        return self.view.application_url('faculties')
179
180class MyDataTab(PrimaryStudentNavTab):
181    """MyData-tab in primary navigation.
182    """
183    grok.order(3)
184    grok.require('waeup.Public')
185    pnav = 4
186    tab_title = u'My Data'
187
188    @property
189    def link_target(self):
190        rel_link = '/students/%s' % self.request.principal.id
191        return self.view.application_url() + rel_link
Note: See TracBrowser for help on using the repository browser.