equal
deleted
inserted
replaced
41 self.wview('htmlheader', rset=self.rset) |
41 self.wview('htmlheader', rset=self.rset) |
42 w(u'<title>%s</title>\n' % xml_escape(page_title)) |
42 w(u'<title>%s</title>\n' % xml_escape(page_title)) |
43 |
43 |
44 |
44 |
45 class LogInTemplate(LogInOutTemplate): |
45 class LogInTemplate(LogInOutTemplate): |
46 id = 'login' |
46 __regid__ = 'login' |
47 title = 'log in' |
47 title = 'log in' |
48 |
48 |
49 def content(self, w): |
49 def content(self, w): |
50 self.wview('logform', rset=self.rset, id='loginBox', klass='') |
50 self.wview('logform', rset=self.rset, id='loginBox', klass='') |
51 |
51 |
52 |
52 |
53 class LoggedOutTemplate(LogInOutTemplate): |
53 class LoggedOutTemplate(LogInOutTemplate): |
54 id = 'loggedout' |
54 __regid__ = 'loggedout' |
55 title = 'logged out' |
55 title = 'logged out' |
56 |
56 |
57 def content(self, w): |
57 def content(self, w): |
58 # FIXME Deprecated code ? |
58 # FIXME Deprecated code ? |
59 msg = self.req._('you have been logged out') |
59 msg = self.req._('you have been logged out') |
76 return view.templatable |
76 return view.templatable |
77 |
77 |
78 |
78 |
79 class NonTemplatableViewTemplate(MainTemplate): |
79 class NonTemplatableViewTemplate(MainTemplate): |
80 """main template for any non templatable views (xml, binaries, etc.)""" |
80 """main template for any non templatable views (xml, binaries, etc.)""" |
81 id = 'main-template' |
81 __regid__ = 'main-template' |
82 __select__ = ~templatable_view() |
82 __select__ = ~templatable_view() |
83 |
83 |
84 def call(self, view): |
84 def call(self, view): |
85 view.set_request_content_type() |
85 view.set_request_content_type() |
86 view.set_stream() |
86 view.set_stream() |
99 class TheMainTemplate(MainTemplate): |
99 class TheMainTemplate(MainTemplate): |
100 """default main template : |
100 """default main template : |
101 |
101 |
102 - call header / footer templates |
102 - call header / footer templates |
103 """ |
103 """ |
104 id = 'main-template' |
104 __regid__ = 'main-template' |
105 __select__ = templatable_view() |
105 __select__ = templatable_view() |
106 |
106 |
107 def call(self, view): |
107 def call(self, view): |
108 self.set_request_content_type() |
108 self.set_request_content_type() |
109 self.template_header(self.content_type, view) |
109 self.template_header(self.content_type, view) |
191 class ErrorTemplate(TheMainTemplate): |
191 class ErrorTemplate(TheMainTemplate): |
192 """fallback template if an internal error occured during displaying the |
192 """fallback template if an internal error occured during displaying the |
193 main template. This template may be called for authentication error, |
193 main template. This template may be called for authentication error, |
194 which means that req.cnx and req.user may not be set. |
194 which means that req.cnx and req.user may not be set. |
195 """ |
195 """ |
196 id = 'error-template' |
196 __regid__ = 'error-template' |
197 |
197 |
198 def call(self): |
198 def call(self): |
199 """display an unexpected error""" |
199 """display an unexpected error""" |
200 self.set_request_content_type() |
200 self.set_request_content_type() |
201 self.req.reset_headers() |
201 self.req.reset_headers() |
220 self.w(u'</body>') |
220 self.w(u'</body>') |
221 |
221 |
222 |
222 |
223 class SimpleMainTemplate(TheMainTemplate): |
223 class SimpleMainTemplate(TheMainTemplate): |
224 |
224 |
225 id = 'main-no-top' |
225 __regid__ = 'main-no-top' |
226 |
226 |
227 def template_header(self, content_type, view=None, page_title='', additional_headers=()): |
227 def template_header(self, content_type, view=None, page_title='', additional_headers=()): |
228 page_title = page_title or view.page_title() |
228 page_title = page_title or view.page_title() |
229 additional_headers = additional_headers or view.html_headers() |
229 additional_headers = additional_headers or view.html_headers() |
230 whead = self.whead |
230 whead = self.whead |
271 from StringIO import StringIO |
271 from StringIO import StringIO |
272 from tempfile import NamedTemporaryFile |
272 from tempfile import NamedTemporaryFile |
273 from cubicweb.ext.xhtml2fo import ReportTransformer |
273 from cubicweb.ext.xhtml2fo import ReportTransformer |
274 |
274 |
275 class PdfMainTemplate(TheMainTemplate): |
275 class PdfMainTemplate(TheMainTemplate): |
276 id = 'pdf-main-template' |
276 __regid__ = 'pdf-main-template' |
277 |
277 |
278 def call(self, view): |
278 def call(self, view): |
279 """build the standard view, then when it's all done, convert xhtml to pdf |
279 """build the standard view, then when it's all done, convert xhtml to pdf |
280 """ |
280 """ |
281 super(PdfMainTemplate, self).call(view) |
281 super(PdfMainTemplate, self).call(view) |
306 |
306 |
307 # page parts templates ######################################################## |
307 # page parts templates ######################################################## |
308 |
308 |
309 class HTMLHeader(View): |
309 class HTMLHeader(View): |
310 """default html headers""" |
310 """default html headers""" |
311 id = 'htmlheader' |
311 __regid__ = 'htmlheader' |
312 |
312 |
313 def call(self, **kwargs): |
313 def call(self, **kwargs): |
314 self.favicon() |
314 self.favicon() |
315 self.stylesheets() |
315 self.stylesheets() |
316 self.javascripts() |
316 self.javascripts() |
350 req.html_headers.define_var('pageid', pid) |
350 req.html_headers.define_var('pageid', pid) |
351 |
351 |
352 |
352 |
353 class HTMLPageHeader(View): |
353 class HTMLPageHeader(View): |
354 """default html page header""" |
354 """default html page header""" |
355 id = 'header' |
355 __regid__ = 'header' |
356 main_cell_components = ('appliname', 'breadcrumbs') |
356 main_cell_components = ('appliname', 'breadcrumbs') |
357 |
357 |
358 def call(self, view, **kwargs): |
358 def call(self, view, **kwargs): |
359 self.main_header(view) |
359 self.main_header(view) |
360 self.w(u''' |
360 self.w(u''' |
417 |
417 |
418 |
418 |
419 class HTMLPageFooter(View): |
419 class HTMLPageFooter(View): |
420 """default html page footer: include logo if any, and close the HTML body |
420 """default html page footer: include logo if any, and close the HTML body |
421 """ |
421 """ |
422 id = 'footer' |
422 __regid__ = 'footer' |
423 |
423 |
424 def call(self, **kwargs): |
424 def call(self, **kwargs): |
425 req = self.req |
425 req = self.req |
426 self.w(u'<div class="footer">') |
426 self.w(u'<div class="footer">') |
427 # XXX Take object from the registry if in there? would be |
427 # XXX Take object from the registry if in there? would be |
438 class HTMLContentHeader(View): |
438 class HTMLContentHeader(View): |
439 """default html page content header: |
439 """default html page content header: |
440 * include message component if selectable for this request |
440 * include message component if selectable for this request |
441 * include selectable content navigation components |
441 * include selectable content navigation components |
442 """ |
442 """ |
443 id = 'contentheader' |
443 __regid__ = 'contentheader' |
444 |
444 |
445 def call(self, view, **kwargs): |
445 def call(self, view, **kwargs): |
446 """by default, display informal messages in content header""" |
446 """by default, display informal messages in content header""" |
447 components = self.vreg['contentnavigation'].poss_visible_objects( |
447 components = self.vreg['contentnavigation'].poss_visible_objects( |
448 self.req, rset=self.rset, view=view, context='navtop') |
448 self.req, rset=self.rset, view=view, context='navtop') |
455 |
455 |
456 class HTMLContentFooter(View): |
456 class HTMLContentFooter(View): |
457 """default html page content footer: include selectable content navigation |
457 """default html page content footer: include selectable content navigation |
458 components |
458 components |
459 """ |
459 """ |
460 id = 'contentfooter' |
460 __regid__ = 'contentfooter' |
461 |
461 |
462 def call(self, view, **kwargs): |
462 def call(self, view, **kwargs): |
463 components = self.vreg['contentnavigation'].poss_visible_objects( |
463 components = self.vreg['contentnavigation'].poss_visible_objects( |
464 self.req, rset=self.rset, view=view, context='navbottom') |
464 self.req, rset=self.rset, view=view, context='navbottom') |
465 if components: |
465 if components: |
468 comp.render(w=self.w, view=view) |
468 comp.render(w=self.w, view=view) |
469 self.w(u'</div>') |
469 self.w(u'</div>') |
470 |
470 |
471 |
471 |
472 class LogFormTemplate(View): |
472 class LogFormTemplate(View): |
473 id = 'logform' |
473 __regid__ = 'logform' |
474 __select__ = match_kwargs('id', 'klass') |
474 __select__ = match_kwargs('id', 'klass') |
475 |
475 |
476 title = 'log in' |
476 title = 'log in' |
477 |
477 |
478 def call(self, id, klass, title=True, message=True): |
478 def call(self, id, klass, title=True, message=True): |