2 # -*- coding: utf-8 -*-
10 from lxml import etree
11 from lxml.builder import ElementMaker
12 #from jinja2 import Template
15 import treecutter.constants as const
16 from treecutter.docbook import Docbook
17 from treecutter.tools import mkdir_p
20 """Class representing a version of a webpage"""
21 def __init__(self,link,page):
29 self._rendered_article = None
30 self._template = 'index'
37 return set(self._resources)
42 def set_article(self,art):
43 self._rendered_article = art
46 self._doc = Docbook(self._file)
47 (self._title, self._menu) = self._doc.title()
48 self._doc.expand_imageobjects()
49 self._doc.parse_xincludes()
51 self._template = self._doc.role()
52 self._status = self._doc.status()
53 doc = self._doc.collect_links()
54 img = self._doc.collect_images()
55 vid = self._doc.collect_videos()
56 form= self._doc.collect_forms()
57 self._resources = doc + img + vid + form
59 def render(self, transform):
60 self._rendered_article = self._doc.xslt(transform['xhtml5'])
62 def template(self,sitemap,style,tdir,subdir):
63 htmlmenu = sitemap.gen_menu(self._lang,None,"links")
64 levelmenu = sitemap.gen_menu(self._lang,self,"tree")
65 langmenu = sitemap.lang_menu(self._lang,self._link)
66 article = self._rendered_article
67 templateLoader = jinja2.FileSystemLoader( searchpath="/" )
68 templateEnv = jinja2.Environment( loader=templateLoader )
70 templateVars = {'title':self._title,
73 'levelmenu':levelmenu,
77 s = unicode(style, "utf-8")
78 t = s+self._template+'.'+self._lang+'.xhtml'
79 template = templateEnv.get_template( t )
80 templateout = template.render( templateVars )
82 outfile = tdir+'xhtml'.join(self._file.rsplit('xml',1))
83 mkdir_p(os.path.dirname(outfile))
84 out = codecs.open(outfile, 'w', 'utf-8')
85 out.write(templateout)