]> git.ipfire.org Git - ipfire.org.git/blame - www/pages/static/__init__.py
Added javascript to init file.
[ipfire.org.git] / www / pages / static / __init__.py
CommitLineData
879aa787
MT
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4import os
5from xml.dom.minidom import parseString
6
7import web
dba657a8
MT
8from web.banners import Banners
9from web.elements import Box, Releases
10from web.news import News
879aa787 11
dba657a8 12class Xml(object):
879aa787
MT
13 def __init__(self, file):
14 file = "%s/pages/static/%s.xml" % (os.getcwd(), file,)
15 f = open(file)
16 data = f.read()
17 f.close()
18
19 self.xml = parseString(data).getElementsByTagName("Site")[0]
dba657a8 20
879aa787
MT
21 def getAttribute(self, node, attr):
22 return node.getAttribute(attr).strip()
dba657a8 23
879aa787
MT
24 def getText(self, node):
25 ret = ""
26 for i in node.childNodes:
27 ret += i.data
28 return ret.encode("utf-8")
29
30
31class Content(Xml):
32 def __init__(self, file,):
33 Xml.__init__(self, file)
34
35 def __call__(self, lang="en"):
36 ret = ""
37 for paragraphs in self.xml.getElementsByTagName("Paragraphs"):
38 for paragraph in paragraphs.getElementsByTagName("Paragraph"):
39 if self.getAttribute(paragraph, "news") == "1":
dba657a8 40 news = News(int(self.getAttribute(paragraph, "count")))
879aa787
MT
41 ret += news(lang).encode("utf-8")
42 continue
43
44 # Heading
45 for heading in paragraph.getElementsByTagName("Heading"):
46 if self.getAttribute(heading, "lang") == lang or \
47 not self.getAttribute(heading, "lang"):
48 heading = self.getText(heading)
49 break
50
dba657a8 51 b = Box(heading)
879aa787
MT
52
53 # Content
54 for content in paragraph.getElementsByTagName("Content"):
55 if self.getAttribute(content, "lang") == lang or \
56 not self.getAttribute(content, "lang"):
57 if self.getAttribute(content, "raw") == "1":
58 s = self.getText(content)
59 else:
60 s = "<p>%s</p>" % self.getText(content)
61 b.w(s)
62
63 ret += b()
64 return ret
65
66
67class Sidebar(Xml):
68 def __init__(self, file):
69 Xml.__init__(self, file)
70
71 def __call__(self, lang="en"):
72 ret = ""
73 sidebar = self.xml.getElementsByTagName("Sidebar")[0]
74 for paragraph in sidebar.getElementsByTagName("Paragraph"):
75 if self.getAttribute(paragraph, "banner") == "1":
dba657a8 76 b = Banners()
879aa787 77 ret += """<h4>%(title)s</h4><a href="%(link)s" target="_blank">
a206fac6 78 <img class="banner" src="%(uri)s" /></a>""" % b.random()
879aa787 79 continue
dba657a8
MT
80 elif self.getAttribute(paragraph, "releases") == "1":
81 r = Releases()
82 ret += r(lang)
83 continue
879aa787
MT
84
85 # Heading
86 for heading in paragraph.getElementsByTagName("Heading"):
87 if self.getAttribute(heading, "lang") == lang or \
88 not self.getAttribute(heading, "lang"):
89 heading = self.getText(heading)
90 break
91
92 ret += "<h4>%s</h4>" % heading
93
94 # Content
95 for content in paragraph.getElementsByTagName("Content"):
96 if self.getAttribute(content, "lang") == lang or \
97 not self.getAttribute(content, "lang"):
98 if self.getAttribute(content, "raw") == "1":
99 s = self.getText(content)
100 else:
101 s = "<p>%s</p>" % self.getText(content)
102 ret += s
103
104 return ret
dba657a8 105
70687568
JPT
106class Javascript(Xml):
107 def __init__(self, file):
108 Xml.__init__(self, file)
109
110 def __call__(self, lang="en"):
111 ret = ""
112 scripts = self.xml.getElementsByTagName("Script")
113 for script in scripts:
114 ret += self.getText(script)
115
116 return ret
117
118
119
dba657a8
MT
120page = web.Page()
121page.content = Content(page.site)
122page.sidebar = Sidebar(page.site)
70687568 123page.javascript = Javascript(page.site)