[z3-checkins] r5575 - z3/www/trunk
faassen at codespeak.net
faassen at codespeak.net
Wed Jul 14 19:44:55 MEST 2004
Author: faassen
Date: Wed Jul 14 19:44:53 2004
New Revision: 5575
Modified:
z3/www/trunk/mkwebsite.py
Log:
Massive refactoring to support more easy creation of subsites and
auto-updating of various links.
Modified: z3/www/trunk/mkwebsite.py
==============================================================================
--- z3/www/trunk/mkwebsite.py (original)
+++ z3/www/trunk/mkwebsite.py Wed Jul 14 19:44:53 2004
@@ -8,59 +8,121 @@
'http://codespeak.net/svn/z3/%s/trunk/%s' % (package, path)),
name)
+class Site(publish.Website):
+ def __init__(self, path, root_project, css_link):
+ publish.Website.__init__(self, path)
+ self._root = root_project
+ self._projects = []
+ self._css_link = css_link
+
+ def registerProject(self, project):
+ self._projects.append(project)
+
+ def getMainProjectLinks(self):
+ result = [(self._root.getShortTitle(), 'index.html')]
+ for project in self._projects:
+ result.append((project.getShortTitle(), project.getName()))
+ return result
+
+ def getProjectLinks(self):
+ result = []
+ for title, link in self.getMainProjectLinks():
+ if link == 'index.html':
+ link = '..'
+ else:
+ link = '../' + link
+ result.append((title, link))
+ return result
+
+ def getRootLayouter(self):
+ # layouter for pages in the website root
+ return publish.FileSimpleLayouter(
+ self._root.getTemplatePath(),
+ style=self._css_link,
+ banner=self._root.getBannerLink(),
+ site_links=self.getMainProjectLinks(),
+ )
+
+ def getProjectLayouter(self, project):
+ # layouter for pages in directories under root
+ banner_link = project.getBannerLink()
+ if banner_link is None:
+ banner_link = '../' + self._root.getBannerLink()
+ return publish.FileSimpleLayouter(
+ project.getTemplatePath(),
+ style='../' + self._css_link,
+ banner=banner_link,
+ site_links=self.getProjectLinks(),
+ )
+
+ def construct(self):
+ self._root.construct(self)
+ for project in self._projects:
+ project.construct(self)
+
+class Project:
+ def __init__(self, name, short_title, title, factory,
+ template_path=None, banner_link=None):
+ self._name = name
+ self._short_title = short_title
+ self._title = title
+ self._factory = factory
+ self._template_path = template_path
+ self._banner_link = banner_link
+
+ def getName(self):
+ return self._name
+
+ def getShortTitle(self):
+ return self._short_title
+
+ def getTitle(self):
+ return self._title
+
+ def getTemplatePath(self):
+ return self._template_path
+
+ def getBannerLink(self):
+ return self._banner_link
+
+ def construct(self, site):
+ self._factory(site, self)
+
def createWebSite(path):
"""Create the website from various resources, and save.
path - directory to store the created website.
"""
- # the project links
- main_project_links = [
- ('Z3 Base', 'index.html'),
- ('Five', 'five'),
- ]
+ root = Project('z3 base', 'Z3 Base', 'Zope 3 Base', root_site,
+ 'layout/main_layout.html', 'z3-banner.png')
- # layouter for pages in the website root
- main_layouter = publish.FileSimpleLayouter(
- 'layout/main_layout.html',
- style='style.css',
- banner='z3-banner.png',
- site_links=main_project_links,
- )
+ site = Site(path, root, 'style.css')
- # construct project links for pages under main from main_project_links
- project_links = []
- for name, link in main_project_links:
- if link == 'index.html':
- link = '..'
- else:
- link = '../' + link
- project_links.append((name, link))
-
- # layouter for pages in directories under root
- page_layouter = publish.FileSimpleLayouter(
+ five = Project(
+ 'five', 'Five', 'Five: Zope 3 in Zope 2',
+ five_site,
'layout/layout.html',
- style='../style.css',
- banner='../z3-banner.png',
- site_links=project_links,
- )
+ 'five-banner.png')
- # layouter for redirect pages
- redirect_layouter = publish.FileSimpleLayouter(
- 'layout/redirect.html',
- style='style.css',
- banner='z3-banner.png',
- site_links=project_links,
- )
-
- # create a website object
- website = publish.Website(path)
+ site.registerProject(five)
+
+ modzope = Project(
+ 'modzope', 'modzope', 'modzope: Zope 3 integrated into Apache',
+ modzope_site,
+ 'layout/layout.html')
+
+ site.registerProject(modzope)
- # site root
- # *********
+ # construct site
+ site.construct()
+ # save site to disk
+ site.save()
+
+def root_site(site, project):
# register essential resources in root of site
- website.registerResources(
+ site.registerResources(
[
publish.FileResource('resource/style.css'),
publish.FileResource('resource/z3-banner.png'),
@@ -71,7 +133,7 @@
)
# register pages for root of site
- main_quick_links = [
+ quick_links = [
('svn (the code)',
'http://codespeak.net/svn/z3/'),
@@ -79,17 +141,26 @@
'http://codespeak.net/mailman/listinfo/z3-checkins'),
]
- website.registerPages(
+ site.registerPages(
[
publish.FileRstPage('text/index.txt'),
],
- main_layouter,
+ site.getRootLayouter(),
'.',
- quick_links=main_quick_links,
+ quick_links=quick_links,
)
-
+
# redirect old five page
- website.registerPages(
+
+ # layouter for redirect pages
+ redirect_layouter = publish.FileSimpleLayouter(
+ 'layout/redirect.html',
+ style='style.css',
+ banner=project.getBannerLink(),
+ site_links=site.getProjectLinks(),
+ )
+
+ site.registerPages(
[
publish.SimplePage('five'),
],
@@ -98,35 +169,23 @@
url='http://codespeak.net/z3/five',
)
- # five
- # ****
-
- # construct five subsite
-
+def five_site(site, project):
# special banner resource for five
- website.registerResources(
+ site.registerResources(
[
publish.FileResource('resource/five-banner.png'),
],
- 'five',
- )
-
- # special layouter for five
- five_page_layouter = publish.FileSimpleLayouter(
- 'layout/layout.html',
- style='../style.css',
- banner='five-banner.png',
- site_links=project_links,
+ project.getName(),
)
- five_nav_links = [
+ nav_links = [
('Five main', 'index.html'),
('Features', 'features.html'),
('Directives', 'directives.html'),
('Manual', 'manual.html')
]
- five_quick_links = [
+ quick_links = [
('svn (the code)',
'http://codespeak.net/svn/z3/Five/'),
@@ -137,44 +196,39 @@
'http://codespeak.net/mailman/listinfo/z3-checkins'),
]
- website.registerPages(
+ site.registerPages(
[
Z3Page('Five', 'doc/main.txt', 'index'),
Z3Page('Five', 'doc/features.txt'),
Z3Page('Five', 'doc/directives.txt'),
Z3Page('Five', 'doc/manual.txt'),
],
- five_page_layouter,
- 'five',
- nav_links=five_nav_links,
- quick_links=five_quick_links,
- )
-
- # modzope
- # *******
-
- modzope_nav_links = [
+ site.getProjectLayouter(project),
+ project.getName(),
+ nav_links=nav_links,
+ quick_links=quick_links,
+ )
+
+def modzope_site(site, project):
+ nav_links = [
('modzope main', 'index.html'),
]
-
- modzope_quick_links = [
+
+ quick_links = [
('svn (the code)',
'http://codespeak.net/svn/z3/modzope/'),
]
- website.registerPages(
+ site.registerPages(
[
Z3Page('modzope', 'README.txt', 'index'),
],
- page_layouter,
- 'modzope',
- nav_links=modzope_nav_links,
- quick_links=modzope_quick_links,
+ site.getProjectLayouter(project),
+ project.getName(),
+ nav_links=nav_links,
+ quick_links=quick_links,
)
- # finally, save website
- website.save()
-
def main():
import sys
try:
More information about the z3-checkins
mailing list