]>
git.ipfire.org Git - ipfire.org.git/blob - www/web/__init__.py
00758083a6f7d5e43cd8459f4c9ebd17447172b1
2 # -*- coding: utf-8 -*-
8 import simplejson
as json
10 from http
import HTTPResponse
, WebError
17 self
.output
+= "%s\n" % s
24 def __init__(self
, file):
27 data
= data
.replace('\n', '') # Remove all \n
28 data
= data
.replace('\t', '') # Remove all \t
29 self
.json
= json
.loads(data
)
34 def include(self
, file):
38 self
.w(output
% self
.data
)
41 m
= Menu(self
.langs
.current
)
44 def __init__(self
, title
, content
, sidebar
=None):
46 self
.langs
= Languages()
47 self
.data
= {"server": os
.environ
["SERVER_NAME"].replace("ipfire", "<span>ipfire</span>"),
48 "title" : "%s - %s" % (os
.environ
["SERVER_NAME"], title
,),
50 "document_name" : title
,
51 "lang" : self
.langs
.current
,
52 "languages" : self
.langs
.menu(title
),
53 "year" : time
.strftime("%Y"),
54 "slogan" : "Security today!",
55 "content" : content(self
.langs
.current
),
58 self
.data
["sidebar"] = sidebar(self
.langs
.current
)
62 self
.include("template.inc")
66 h
= HTTPResponse(code
)
67 h
.execute(self
.output
)
71 def __init__(self
, limit
=3):
72 Json
.__init
__(self
, "news.json")
73 self
.news
= self
.json
.values()
75 self
.news
= self
.news
[:limit
]
78 def html(self
, lang
="en"):
80 for item
in self
.news
:
81 for i
in ("content", "subject",):
82 if type(item
[i
]) == type({}):
83 item
[i
] = item
[i
][lang
]
84 b
= Box(item
["date"] + " - " + item
["subject"], "by %s" % item
["author"])
91 def headlines(self
, lang
="en"):
93 for item
in self
.news
:
94 if type(item
["subject"]) == type({}):
95 item
["subject"] = item
["subject"][lang
]
96 headlines
.append((item
["subject"],))
101 def __init__(self
, lang
):
103 Json
.__init
__(self
, "menu.json")
106 s
= """<div id="menu"><ul>\n"""
107 for item
in self
.json
.values():
111 if type(item
["name"]) == type({}):
112 item
["name"] = item
["name"][self
.lang
]
114 # Add language attribute to local uris
115 if item
["uri"].startswith("/"):
116 item
["uri"] = "/%s%s" % (self
.lang
, item
["uri"],)
118 if os
.environ
["REQUEST_URI"].endswith(item
["uri"]):
119 item
["active"] = "class=\"active\""
121 s
+= """<li><a href="%(uri)s" %(active)s>%(name)s</a></li>\n""" % item
127 def __init__(self
, lang
="en"):
129 Json
.__init
__(self
, "banners.json")
132 banner
= random
.choice(self
.json
.values())
137 def __init__(self
, doc
=""):
140 for lang
in ("de", "en",):
143 self
.current
= cgi
.FieldStorage().getfirst("lang") or "en"
145 def append(self
, lang
):
146 self
.available
.append(lang
)
150 for lang
in self
.available
:
151 s
+= """<a href="/%(lang)s/%(doc)s"><img src="/images/%(lang)s.gif" alt="%(lang)s" /></a>""" % \
152 { "lang" : lang
, "doc" : doc
, }
157 def __init__(self
, headline
, subtitle
=""):
159 self
.w("""<div class="post"><h3>%s</h3>""" % (headline
,))
161 self
.w("""<ul class="post_info"><li class="date">%s</li></ul>""" % (subtitle
,))
164 self
.w("""<br class="clear" /></div>""")
165 return Data
.__call
__(self
)
169 def __init__(self
, name
):
172 def content(self
, lang
):
173 #self.w("""<h4>Test Page</h4>
174 # <p>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr,
175 # sed diam nonumy eirmod tempor invidunt ut labore et dolore magna
176 # aliquyam erat, sed diam voluptua. At vero eos et accusam et justo
177 # duo dolores et ea rebum.</p>""")
179 self
.w("""<h4>%(title)s</h4><a href="%(link)s" target="_blank">
180 <img class="banner" src="%(uri)s" /></a>""" % banners
.random())
182 def __call__(self
, lang
):
184 return Data
.__call
__(self
)
188 def __init__(self
, name
):
192 self
.w("""<h3>Test Page</h3>
193 <p>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr,
194 sed diam nonumy eirmod tempor invidunt ut labore et dolore magna
195 aliquyam erat, sed diam voluptua. At vero eos et accusam et justo
196 duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
197 sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
198 consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
199 ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero
200 eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
201 gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
202 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
203 nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
204 sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
205 rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
206 ipsum dolor sit amet.</p>""")
208 b
= Box("Test box one", "Subtitle of box")
209 b
.write("""<p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit
210 esse molestie consequat, vel illum dolore eu feugiat nulla facilisis
211 at vero eros et accumsan et iusto odio dignissim qui blandit praesent
212 luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
213 Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam
214 nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat
218 b
= Box("Test box two", "Subtitle of box")
219 b
.write("""<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
220 suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
221 vel eum iriure dolor in hendrerit in vulputate velit esse molestie
222 consequat, vel illum dolore eu feugiat nulla facilisis at vero eros
223 et accumsan et iusto odio dignissim qui blandit praesent luptatum
224 zzril delenit augue duis dolore te feugait nulla facilisi.</p>""")
227 def __call__(self
, lang
="en"):
229 return Data
.__call
__(self
)