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:
templ = self.navbar.generate(False, f, a, feed_len,
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')
body.insert(0, elem)
if self.remove_javascript:
@ -575,7 +577,8 @@ class BasicNewsRecipe(object, LoggingInterface):
def feeds2index(self, feeds):
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
def description_limiter(cls, src):
@ -626,7 +629,8 @@ class BasicNewsRecipe(object, LoggingInterface):
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):

View File

@ -16,6 +16,14 @@ class NewYorker(BasicNewsRecipe):
max_articles_per_feed = 100
no_stylesheets = 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 = [
dict(name='div' , attrs={'id':'printbody' })

View File

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