equal
deleted
inserted
replaced
11 from time import timezone |
11 from time import timezone |
12 |
12 |
13 from logilab.mtconverter import xml_escape |
13 from logilab.mtconverter import xml_escape |
14 |
14 |
15 from cubicweb.selectors import non_final_entity, one_line_rset, appobject_selectable |
15 from cubicweb.selectors import non_final_entity, one_line_rset, appobject_selectable |
16 from cubicweb.view import EntityView, AnyRsetView |
16 from cubicweb.view import EntityView, AnyRsetView, Component |
17 from cubicweb.web.httpcache import MaxAgeHTTPCacheManager |
|
18 from cubicweb.web.component import Component |
|
19 from cubicweb.web.box import BoxTemplate |
|
20 from cubicweb.common.uilib import simple_sgml_tag |
17 from cubicweb.common.uilib import simple_sgml_tag |
|
18 from cubicweb.web import httpcache, box |
21 |
19 |
22 |
20 |
23 # base xml views ############################################################## |
21 # base xml views ############################################################## |
24 |
22 |
25 class XMLView(EntityView): |
23 class XMLView(EntityView): |
120 |
118 |
121 def feed_url(self): |
119 def feed_url(self): |
122 return self.entity(0, 0).rss_feed_url() |
120 return self.entity(0, 0).rss_feed_url() |
123 |
121 |
124 |
122 |
125 class RSSIconBox(BoxTemplate): |
123 class RSSIconBox(box.BoxTemplate): |
126 """just display the RSS icon on uniform result set""" |
124 """just display the RSS icon on uniform result set""" |
127 id = 'rss' |
125 id = 'rss' |
128 __select__ = (BoxTemplate.__select__ |
126 __select__ = (box.BoxTemplate.__select__ |
129 & appobject_selectable('components', 'rss_feed_url')) |
127 & appobject_selectable('components', 'rss_feed_url')) |
130 |
128 |
131 visible = False |
129 visible = False |
132 order = 999 |
130 order = 999 |
133 |
131 |
135 try: |
133 try: |
136 rss = self.req.external_resource('RSS_LOGO') |
134 rss = self.req.external_resource('RSS_LOGO') |
137 except KeyError: |
135 except KeyError: |
138 self.error('missing RSS_LOGO external resource') |
136 self.error('missing RSS_LOGO external resource') |
139 return |
137 return |
140 urlgetter = self.vreg.select_component('rss_feed_url', self.req, self.rset) |
138 urlgetter = self.vreg.select('components', 'rss_feed_url', |
|
139 self.req, rset=self.rset) |
141 url = urlgetter.feed_url() |
140 url = urlgetter.feed_url() |
142 self.w(u'<a href="%s"><img src="%s" alt="rss"/></a>\n' % (xml_escape(url), rss)) |
141 self.w(u'<a href="%s"><img src="%s" alt="rss"/></a>\n' % (xml_escape(url), rss)) |
143 |
142 |
144 |
143 |
145 class RSSView(XMLView): |
144 class RSSView(XMLView): |
146 id = 'rss' |
145 id = 'rss' |
147 title = _('rss') |
146 title = _('rss') |
148 templatable = False |
147 templatable = False |
149 content_type = 'text/xml' |
148 content_type = 'text/xml' |
150 http_cache_manager = MaxAgeHTTPCacheManager |
149 http_cache_manager = httpcache.MaxAgeHTTPCacheManager |
151 cache_max_age = 60*60*2 # stay in http cache for 2 hours by default |
150 cache_max_age = 60*60*2 # stay in http cache for 2 hours by default |
152 |
151 |
153 def _open(self): |
152 def _open(self): |
154 req = self.req |
153 req = self.req |
155 self.w(u'<?xml version="1.0" encoding="%s"?>\n' % req.encoding) |
154 self.w(u'<?xml version="1.0" encoding="%s"?>\n' % req.encoding) |