From e31795efb2e691aa10a8f9b252e8f7708a47ba85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Sun, 6 Jan 2013 12:10:29 +0100 Subject: [PATCH] Factorize hooks management (only overwrite) Manage link attribute for title tag Update copyright and CSS --- generators/archive.py | 6 +--- generators/category.py | 6 +--- generators/index.py | 40 +++++++++++++++++++-------- generators/post.py | 16 +++++++---- generators/search.py | 3 -- generators/tag.py | 6 +--- sites/blog.soutade.fr/_base.html | 2 +- sites/blog.soutade.fr/_base_post.html | 2 +- sites/blog.soutade.fr/_index.html | 2 +- sites/blog.soutade.fr/css/blog.css | 22 +++++++++++++++ 10 files changed, 67 insertions(+), 38 deletions(-) diff --git a/generators/archive.py b/generators/archive.py index 2ce8f45..ef2e1fa 100644 --- a/generators/archive.py +++ b/generators/archive.py @@ -24,11 +24,7 @@ class Archive(Index): def generate(self, blog, src, output): from dynastie.models import Post, Blog - self.hooks = {'posts' : self.createPosts, - 'navigation' : self.createNavigation, - 'archive' : self.createArchive, - 'tags' : self.createTags, - 'replace' : self.createReplace} + self.hooks['archive'] = self.createArchive dom = self.parseTemplate(blog, src, output, 'archive', 'archive') if dom is None: return self.report diff --git a/generators/category.py b/generators/category.py index 7f8ef82..ee32e44 100644 --- a/generators/category.py +++ b/generators/category.py @@ -24,11 +24,7 @@ class Category(Index): def generate(self, blog, src, output): from dynastie.models import Post, Blog, Category - self.hooks = {'posts' : self.createPosts, - 'navigation' : self.createNavigation, - 'category' : self.createCategory, - 'tags' : self.createTags, - 'replace' : self.createReplace} + self.hooks['category'] = self.createCategory dom = self.parseTemplate(blog, src, output, 'category', 'category') if dom is None: return self.report diff --git a/generators/index.py b/generators/index.py index e9e014c..c073d1c 100644 --- a/generators/index.py +++ b/generators/index.py @@ -11,11 +11,22 @@ class Index(DynastieGenerator): cur_page = 0 nb_pages = 0 cur_post = 0 + cur_post_obj = None posts_per_page = 0 filename = 'index' dirname = '' blog = None + def __init__(self, hash_posts=None): + DynastieGenerator.__init__(self, hash_posts) + + self.hooks = {'posts' : self.createPosts, + 'title' : self.createTitle, + 'navigation' : self.createNavigation, + 'recents' : self.createRecents, + 'tags' : self.createTags, + 'replace' : self.createReplace} + def createReplace(self, posts, dom, root, replace_elem): if not replace_elem.hasAttribute('div_name'): self.addError('No attribute div_name for a replace tag') @@ -82,9 +93,20 @@ class Index(DynastieGenerator): return res - def createPost(self, post, dom, post_elem, root): + def createTitle(self, posts, dom, root, title_elem): + create_link = (title_elem.getAttribute('link') == '1') + post = self.cur_post_obj + if create_link == True: + node = self.createElement(dom, 'title') + node.appendChild(self.createLinkElem(dom, post.getPath(), post.title)) + else: + node = self.createElement(dom, 'title', post.title) + + root.replaceChild(node, title_elem) + + def createPost(self, posts, dom, post_elem, root): + post = self.cur_post_obj values = {} - values['title'] = self.createLinkElem(dom, post.getPath(), post.title) values['author'] = post.author.first_name + ' ' + post.author.last_name values['date'] = post.creation_date.strftime('%A, %d %B %Y %H:%m') values['post_content'] = '' @@ -108,9 +130,9 @@ class Index(DynastieGenerator): while True: start = post_content.find('') if start == -1: break + end = post_content.find('') if end < start: self.addError('Invalid tags in ' + filename) @@ -138,12 +160,15 @@ class Index(DynastieGenerator): def createPosts(self, posts, dom, root, node): posts_elem = self.createElement(dom, 'posts') + create_link = (node.getAttribute('link') == '1') for i in range(0, self.posts_per_page): post_elem = self.createElement(dom, 'post') if len(posts) > self.cur_post: - self.createPost(posts[self.cur_post], dom, post_elem, node) + self.cur_post_obj = posts[self.cur_post] + self.createPost(posts, dom, post_elem, node) else: post_elem = self.createElement(dom, '', 'No posts yet') + self.cur_post_obj = None posts_elem.appendChild(post_elem) # Parse inner HTML @@ -344,13 +369,6 @@ class Index(DynastieGenerator): def generate(self, blog, src, output): from dynastie.models import Post, Blog - self.hooks = {'posts' : self.createPosts, - 'navigation' : self.createNavigation, - 'recents' : self.createRecents, - 'tags' : self.createTags, - 'replace' : self.createReplace} - - dom = self.parseTemplate(blog, src, output, 'index') if dom is None: return self.report diff --git a/generators/post.py b/generators/post.py index f350c7d..f27860c 100644 --- a/generators/post.py +++ b/generators/post.py @@ -120,7 +120,9 @@ class Post(Index): def _createPost(self, post, dom, post_elem, root): import sys, traceback - self.createPost(post, dom, post_elem, root) + self.cur_post_obj = post + posts = [post] + self.createPost(posts, dom, post_elem, root) # Post are appended by index. Remove template post_nodes = dom.getElementsByTagNameNS(self.URI, 'post') @@ -139,11 +141,12 @@ class Post(Index): def _generate(self, blog, src, output, posts): import xml - self.hooks = {'post' : self._createPost, - 'meta' : self.createMetas, - 'comments' : self.createComments, - 'replace' : self.createReplace, - 'tags' : self.createTags} + + self.hooks['post'] = self._createPost + self.hooks['meta'] = self.createMetas + self.hooks['comments'] = self.createComments + self.hooks['replace'] = self.createReplace + del self.hooks['navigation'] self.blog = blog name = 'post' @@ -217,6 +220,7 @@ class Post(Index): def preview(self, src, values): from dynastie.models import Blog + # Override all hooks self.hooks = {'post' : self.createPreview, 'tags' : self.createTags} diff --git a/generators/search.py b/generators/search.py index d182722..7c3c048 100644 --- a/generators/search.py +++ b/generators/search.py @@ -17,9 +17,6 @@ class Search(Index): self.blog = blog - self.hooks = {'posts' : self.createPosts, - 'replace' : self.createReplace} - if not os.path.exists(src + '/_search.html'): self.addError('No _search.html found, exiting') return self.report diff --git a/generators/tag.py b/generators/tag.py index 84f7a88..fe899a3 100644 --- a/generators/tag.py +++ b/generators/tag.py @@ -24,11 +24,7 @@ class Tag(Index): def generate(self, blog, src, output): from dynastie.models import Post, Blog, Tag - self.hooks = {'posts' : self.createPosts, - 'navigation' : self.createNavigation, - 'tag' : self.createTag, - 'tags' : self.createTags, - 'replace' : self.createReplace} + self.hooks['tag'] = self.createTag dom = self.parseTemplate(blog, src, output, 'tag', 'tag') if dom is None: return self.report diff --git a/sites/blog.soutade.fr/_base.html b/sites/blog.soutade.fr/_base.html index 857fde9..6ae8cf3 100755 --- a/sites/blog.soutade.fr/_base.html +++ b/sites/blog.soutade.fr/_base.html @@ -77,7 +77,7 @@ diff --git a/sites/blog.soutade.fr/_base_post.html b/sites/blog.soutade.fr/_base_post.html index 5dc92f7..ee157e5 100644 --- a/sites/blog.soutade.fr/_base_post.html +++ b/sites/blog.soutade.fr/_base_post.html @@ -79,7 +79,7 @@ diff --git a/sites/blog.soutade.fr/_index.html b/sites/blog.soutade.fr/_index.html index ffda613..f96c434 100755 --- a/sites/blog.soutade.fr/_index.html +++ b/sites/blog.soutade.fr/_index.html @@ -1,7 +1,7 @@
- +
|
Écrit par
diff --git a/sites/blog.soutade.fr/css/blog.css b/sites/blog.soutade.fr/css/blog.css index 9347c04..f56fe24 100755 --- a/sites/blog.soutade.fr/css/blog.css +++ b/sites/blog.soutade.fr/css/blog.css @@ -167,6 +167,28 @@ div.post > div.post_header padding-bottom:5px; } +div.post > div.post_header > div.title +{ + display:block; + text-decoration:none; + margin: 0.2em 0; + padding: 0; + font-weight:normal; + font-style:normal; + letter-spacing:normal; + word-spacing:normal; + font-variant:normal; + text-decoration:none; + font-variant:normal; + text-transform:none; + text-align:left; + text-indent:0; + line-height:inherit; + font-family: Verdana, Geneva, Arial, Helvetica, Sans-Serif; + font-size: 26px; + color: #181B0D; +} + div.post > div.post_header > div.title > a { display:block;