diff --git a/content/index/05_left b/content/index/05_left index d2b2bab..4e637b6 100644 --- a/content/index/05_left +++ b/content/index/05_left @@ -1,7 +1,3 @@ - - -

Screenshots

@@ -16,12 +12,8 @@
-

 

-
- -
-

foo bar

-

today is the day

+

Recent changes

+ %(rss_content)s
diff --git a/demo.html b/demo.html index f826472..d37eabd 100644 --- a/demo.html +++ b/demo.html @@ -56,7 +56,33 @@ + + + + + diff --git a/details.html b/details.html index 7cb74bc..947a1dd 100644 --- a/details.html +++ b/details.html @@ -110,7 +110,33 @@ + + + + + diff --git a/download.html b/download.html index 15cfe0c..bb552d9 100644 --- a/download.html +++ b/download.html @@ -100,7 +100,33 @@ + + + + + diff --git a/faq.html b/faq.html index 9d2f261..b83a1dd 100644 --- a/faq.html +++ b/faq.html @@ -108,7 +108,33 @@ + + + + + diff --git a/gerippe.tmpl b/gerippe.tmpl index 2530d77..45132b4 100644 --- a/gerippe.tmpl +++ b/gerippe.tmpl @@ -1,5 +1,5 @@ - - - - +%(header)s + %(nav)s + %(entries)s +%(footer)s diff --git a/gfx/main.css b/gfx/main.css index 3d7c112..0a52d00 100644 --- a/gfx/main.css +++ b/gfx/main.css @@ -196,3 +196,28 @@ ol.toc li { ol.toc a { text-decoration: none; } + +/* recent changes (rss feed) */ +ul.recent_changes { + padding-left: 0; + list-style-type: none; +} + +ul.recent_changes li { +} + +ul.recent_changes li h3 { + font-size: 0.9em; + margin: 2px; + text-decoration: none; +} + +ul.recent_changes li h3 a { + text-decoration: none; +} + +ul.recent_changes li p.date { + padding: 2px 2px 0 2px; + font-size: 0.8em; +} + diff --git a/index.html b/index.html index 64bbce5..870c979 100644 --- a/index.html +++ b/index.html @@ -43,10 +43,6 @@

Any Questions? Mail to info(at)cryptobox.org!

- - -

Screenshots

@@ -61,12 +57,25 @@
-

 

-
+

Recent changes

+ -
-

foo bar

-

today is the day

@@ -128,7 +137,33 @@ + + + + + diff --git a/placeholder/footer b/placeholder/footer index 160a22e..17b83c2 100644 --- a/placeholder/footer +++ b/placeholder/footer @@ -5,5 +5,31 @@ + + + + + diff --git a/project.html b/project.html index 7dcc5a5..4266a74 100644 --- a/project.html +++ b/project.html @@ -113,7 +113,33 @@ + + + + + diff --git a/screenshots.html b/screenshots.html index e035b7d..c171351 100644 --- a/screenshots.html +++ b/screenshots.html @@ -60,7 +60,33 @@ + + + + + diff --git a/templatewriter.py b/templatewriter.py index 87c4903..cd4c86b 100755 --- a/templatewriter.py +++ b/templatewriter.py @@ -1,19 +1,29 @@ #!/usr/bin/env python import os, re +try: + import feedparser +except ImportError: + sys.stderr.write("Could not load python module 'feedparser'!\n") + sys.stderr.write("Maybe you should run 'apt-get install python-feedparser.\n") + sys.exit(1) + + class TemplateWriter: - templatefile = "gerippe.tmpl" + templatefile = "./gerippe.tmpl" tmpldir = "./placeholder" contentdir = "./content" tmplfileext = ".tmpl" outfileext = ".html" + max_rss_items = 5 ## regular expressions of not-wanted file/directory names ## for now: no svn, no vi-swap files, no backup files ignore_items = [ r'\.svn', r'\.swp$', r'~$' ] def __init__(self): - pass + self.placeholder = self.__get_placeholder_dict() + self.template = open(self.templatefile).read() def get_sorted(self, flist): @@ -35,52 +45,59 @@ class TemplateWriter: return result - def string_replace(self, infile, outfile): - template = open(infile).read() - open(outfile, "w").write(template) - text = {} + def __get_placeholder_dict(self): + """returns the common dictionary for all files - except for the 'entries' + """ + placeholder = {} for tmpl in self.get_sorted(self.get_filtered(os.listdir(self.tmpldir))): - tmplfile = str(os.path.join(self.tmpldir, tmpl)) + tmplfile = os.path.join(self.tmpldir, tmpl) if not os.path.isfile(tmplfile): print " str.repl: cancelling %s - not a file" % tmplfile else: - template = open(outfile).read() - print " str.repl: using %s" % tmplfile - newcontent = open(tmplfile).read() - text[tmpl] = template.replace("" % tmpl, newcontent) - open(outfile, "w").write(text[tmpl]) - return + placeholder[tmpl] = file(tmplfile).read() + placeholder["rss_content"] = self.get_rss_info() + return placeholder - def build_sites(self): - '''use all files ending with .tmpl''' - for tmplfile in self.get_sorted(self.get_filtered(os.listdir("./"))): - if tmplfile.rfind(self.tmplfileext) >= 1: - infile = tmplfile - (tmplfilename, tmplfileext)=os.path.splitext(tmplfile) - outfile = tmplfilename + self.outfileext - print "building: %s -> %s" % (tmplfile, outfile) - self.string_replace(infile, outfile) - return + def get_entries(self, html_name): + """reads all files in the given directory sorted into a string + """ + entries = "" + for entry in self.get_sorted(self.get_filtered(os.listdir( + os.path.join(self.contentdir, html_name)))): + entries += file(os.path.join(self.contentdir, html_name, entry)).read() + return entries def build_sites_from_gerippe(self): - print "Let's build some html files from: %s" % self.templatefile for html in self.get_sorted(self.get_filtered(os.listdir(self.contentdir))): print " building: %s%s" % (html, self.outfileext) - entries = "" - for entry in self.get_sorted(self.get_filtered(os.listdir(os.path.join(self.contentdir, html)))): - print " adding entry: %s " % entry - entries += open(os.path.join(self.contentdir, html, entry)).read() - - template = open(self.templatefile).read() - text = template.replace("", entries) - infile = html+".tmp" - open(infile,"w").write(text) - outfile = html+self.outfileext - self.string_replace(infile, outfile) - os.unlink(infile) + self.placeholder["entries"] = self.get_entries(html) + ## start with the content of the template + text = self.template + ## repeat substitution for five times - for recursive stuff + text = text % self.placeholder + text = text % self.placeholder + text = text % self.placeholder + text = text % self.placeholder + text = text % self.placeholder + ## write the result + outfile = open(html + self.outfileext, "w") + outfile.write(text) + outfile.close() return + + + def get_rss_info(self): + """retrieve rss feed from http://devel.cryptobox.org/timeline""" + timeline_url = r'http://devel.cryptobox.org/timeline?max=%d&wiki=off&ticket=on&changeset=on&milestone=off&format=rss' % self.max_rss_items + entry_html = r'
  • %(updated)s

    %(title)s

    %(summary)s
  • ' + feed = feedparser.parse(timeline_url) + if feed["entries"]: + html_items = [ entry_html % e for e in feed["entries"] ] + return '\n' + else: + return '

    The latest development changes are temporarily unavailable. Sorry!

    ' if __name__ == "__main__":