Fix #1626 (bad font size on "The New Yorker" recipe)

This commit is contained in:
Kovid Goyal 2009-01-19 22:16:34 -08:00
parent 71e91e537a
commit 6a4933c453
3 changed files with 41 additions and 15 deletions

View File

@ -532,7 +532,9 @@ class BasicNewsRecipe(object, LoggingInterface):
if body is not None: if body is not None:
templ = self.navbar.generate(False, f, a, feed_len, templ = self.navbar.generate(False, f, a, feed_len,
not self.has_single_feed, not self.has_single_feed,
url, __appname__, center=self.center_navbar) url, __appname__,
center=self.center_navbar,
extra_css=self.extra_css)
elem = BeautifulSoup(templ.render(doctype='xhtml').decode('utf-8')).find('div') elem = BeautifulSoup(templ.render(doctype='xhtml').decode('utf-8')).find('div')
body.insert(0, elem) body.insert(0, elem)
if self.remove_javascript: if self.remove_javascript:
@ -575,7 +577,8 @@ class BasicNewsRecipe(object, LoggingInterface):
def feeds2index(self, feeds): def feeds2index(self, feeds):
templ = templates.IndexTemplate() templ = templates.IndexTemplate()
return templ.generate(self.title, self.timefmt, feeds).render(doctype='xhtml') return templ.generate(self.title, self.timefmt, feeds,
extra_css=self.extra_css).render(doctype='xhtml')
@classmethod @classmethod
def description_limiter(cls, src): def description_limiter(cls, src):
@ -626,7 +629,8 @@ class BasicNewsRecipe(object, LoggingInterface):
templ = templates.FeedTemplate() templ = templates.FeedTemplate()
return templ.generate(feed, self.description_limiter).render(doctype='xhtml') return templ.generate(feed, self.description_limiter,
extra_css=self.extra_css).render(doctype='xhtml')
def create_logger(self, feed_number, article_number): def create_logger(self, feed_number, article_number):

View File

@ -16,6 +16,14 @@ class NewYorker(BasicNewsRecipe):
max_articles_per_feed = 100 max_articles_per_feed = 100
no_stylesheets = False no_stylesheets = False
use_embedded_content = False use_embedded_content = False
extra_css = '''
.calibre_feed_list {font-size:xx-small}
.calibre_article_list {font-size:xx-small}
.calibre_feed_title {font-size:normal}
.calibre_recipe_title {font-size:normal}
.calibre_feed_description {font-size:xx-small}
'''
keep_only_tags = [ keep_only_tags = [
dict(name='div' , attrs={'id':'printbody' }) dict(name='div' , attrs={'id':'printbody' })

View File

@ -32,6 +32,11 @@ class NavBarTemplate(Template):
xmlns:py="http://genshi.edgewall.org/" xmlns:py="http://genshi.edgewall.org/"
> >
<head>
<style py:if="extra_css" type="text/css">
${extra_css}
</style>
</head>
<body> <body>
<div class="navbar" style="text-align:${'center' if center else 'left'};"> <div class="navbar" style="text-align:${'center' if center else 'left'};">
<hr py:if="bottom" /> <hr py:if="bottom" />
@ -60,14 +65,15 @@ class NavBarTemplate(Template):
''') ''')
def generate(self, bottom, feed, art, number_of_articles_in_feed, def generate(self, bottom, feed, art, number_of_articles_in_feed,
two_levels, url, __appname__, prefix='', center=True): two_levels, url, __appname__, prefix='', center=True,
extra_css=None):
if prefix and not prefix.endswith('/'): if prefix and not prefix.endswith('/'):
prefix += '/' prefix += '/'
return Template.generate(self, bottom=bottom, art=art, feed=feed, return Template.generate(self, bottom=bottom, art=art, feed=feed,
num=number_of_articles_in_feed, num=number_of_articles_in_feed,
two_levels=two_levels, url=url, two_levels=two_levels, url=url,
__appname__=__appname__, prefix=prefix, __appname__=__appname__, prefix=prefix,
center=center) center=center, extra_css=extra_css)
class IndexTemplate(Template): class IndexTemplate(Template):
@ -88,11 +94,14 @@ class IndexTemplate(Template):
<style py:if="style" type="text/css"> <style py:if="style" type="text/css">
${style} ${style}
</style> </style>
<style py:if="extra_css" type="text/css">
${extra_css}
</style>
</head> </head>
<body> <body>
<h1>${title}</h1> <h1 class="calibre_recipe_title">${title}</h1>
<p style="text-align:right">${date}</p> <p style="text-align:right">${date}</p>
<ul> <ul class="calibre_feed_list">
<py:for each="i, feed in enumerate(feeds)"> <py:for each="i, feed in enumerate(feeds)">
<li py:if="feed" id="feed_${str(i)}"> <li py:if="feed" id="feed_${str(i)}">
<a class="feed" href="${'feed_%d/index.html'%i}">${feed.title}</a> <a class="feed" href="${'feed_%d/index.html'%i}">${feed.title}</a>
@ -103,11 +112,12 @@ class IndexTemplate(Template):
</html> </html>
''') ''')
def generate(self, title, datefmt, feeds): def generate(self, title, datefmt, feeds, extra_css=None):
if isinstance(datefmt, unicode): if isinstance(datefmt, unicode):
datefmt = datefmt.encode(preferred_encoding) datefmt = datefmt.encode(preferred_encoding)
date = strftime(datefmt) date = strftime(datefmt)
return Template.generate(self, title=title, date=date, feeds=feeds) return Template.generate(self, title=title, date=date, feeds=feeds,
extra_css=extra_css)
class FeedTemplate(Template): class FeedTemplate(Template):
@ -128,18 +138,21 @@ class FeedTemplate(Template):
<style py:if="style" type="text/css"> <style py:if="style" type="text/css">
${style} ${style}
</style> </style>
<style py:if="extra_css" type="text/css">
${extra_css}
</style>
</head> </head>
<body style="page-break-before:always"> <body style="page-break-before:always">
<h2 class="feed_title">${feed.title}</h2> <h2 class="calibre_feed_title">${feed.title}</h2>
<py:if test="getattr(feed, 'image', None)"> <py:if test="getattr(feed, 'image', None)">
<div class="feed_image"> <div class="calibre_feed_image">
<img alt="${feed.image_alt}" src="${feed.image_url}" /> <img alt="${feed.image_alt}" src="${feed.image_url}" />
</div> </div>
</py:if> </py:if>
<div py:if="getattr(feed, 'description', None)"> <div class="calibre_feed_description" py:if="getattr(feed, 'description', None)">
${feed.description}<br /> ${feed.description}<br />
</div> </div>
<ul> <ul class="calibre_article_list">
<py:for each="i, article in enumerate(feed.articles)"> <py:for each="i, article in enumerate(feed.articles)">
<li id="${'article_%d'%i}" py:if="getattr(article, 'downloaded', False)" style="padding-bottom:0.5em"> <li id="${'article_%d'%i}" py:if="getattr(article, 'downloaded', False)" style="padding-bottom:0.5em">
<a class="article" href="${article.url}">${article.title}</a> <a class="article" href="${article.url}">${article.title}</a>
@ -157,8 +170,9 @@ class FeedTemplate(Template):
</html> </html>
''') ''')
def generate(self, feed, cutoff): def generate(self, feed, cutoff, extra_css=None):
return Template.generate(self, feed=feed, cutoff=cutoff) return Template.generate(self, feed=feed, cutoff=cutoff,
extra_css=extra_css)
class EmbeddedContent(Template): class EmbeddedContent(Template):