Changeset 1678
- Timestamp:
- 12/13/06 01:27:58 (2 years ago)
- Files:
-
- themeengineplugin/0.10/setup.py (modified) (1 diff)
- themeengineplugin/0.10/themeengine/filter.py (modified) (6 diffs)
- themeengineplugin/0.10/themeengine/templates/footer/footer.cs (modified) (1 diff)
- themeengineplugin/0.10/themeengine/templates/header/header.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
themeengineplugin/0.10/setup.py
r1677 r1678 8 8 version = '1.0', 9 9 packages = ['themeengine'], 10 package_data = { 'themeengine': [ 'templates/*.cs', ' htdocs/*.png' ] },10 package_data = { 'themeengine': [ 'templates/*.cs', 'templates/header/*.cs', 'templates/footer/*.cs', 'htdocs/*.css' ] }, 11 11 12 12 author = "Noah Kantrowitz", themeengineplugin/0.10/themeengine/filter.py
r1677 r1678 1 1 from trac.core import * 2 2 from trac.config import Option 3 from trac.web.chrome import ITemplateProvider 4 from trac.web.api import IRequestFilter 3 from trac.web.chrome import ITemplateProvider, add_link 4 from trac.web.api import IRequestFilter, IRequestHandler 5 5 from trac.util.html import Markup 6 6 7 7 import os 8 8 from pkg_resources import resource_filename 9 try: 10 set = set 11 except ImportError: 12 from sets import Set as set 13 9 14 10 15 from api import IThemeProvider, NullTheme … … 29 34 providers = ExtensionPoint(IThemeProvider) 30 35 31 implements(IRequestFilter, I TemplateProvider)36 implements(IRequestFilter, IRequestHandler, ITemplateProvider) 32 37 33 38 def __init__(self): … … 36 41 for provider in self.providers: 37 42 for name in provider.get_theme_names(): 38 self.info[name] = provider.get_theme_info(name) 39 self.info[name]['provider'] = provider 40 self.info[name]['module'] = provider.__class__.__module__ 43 theme = provider.get_theme_info(name) 44 theme['provider'] = provider 45 theme['module'] = provider.__class__.__module__ 46 47 folders = set() 48 for t in ('header', 'footer', 'css'): 49 if t in theme: 50 dir, file = os.path.split(resource_filename(theme['module'], theme[t])) 51 folders.add(dir) 52 theme[t] = file 53 self.log.debug('ThemeEngine: folders are %s', ', '.join(folders)) 54 theme['folders'] = list(folders) 55 56 self.info[name] = theme 41 57 42 58 # IRequestFilter methods … … 49 65 return template, content_type # No theme, early bail out 50 66 51 self._do_template(req, 'header') 52 self._do_template(req, 'footer') 53 67 self._alter_loadpaths(req.hdf, theme['folders']) 68 #self._alter_loadpaths(req.hdf, resource_filename(__name__, 'templates')) 69 if 'header' in theme and theme['header'] != 'header.cs': 70 self._alter_loadpaths(req.hdf, resource_filename(__name__, 'templates/header')) 71 if 'footer' in theme and theme['footer'] != 'footer.cs': 72 self._alter_loadpaths(req.hdf, resource_filename(__name__, 'templates/footer')) 73 if 'css' in theme: 74 add_link(req, 'stylesheet', req.href.themeengine('theme.css'), mimetype='text/css') 75 76 req.hdf['themeengine'] = theme 77 54 78 return template, content_type 79 80 # IRequestHandler methods 81 def match_request(self, req): 82 return req.path_info == '/themeengine/theme.css' 83 84 def process_request(self, req): 85 self._alter_loadpaths(req.hdf, self.theme['folders']) 86 return self.theme['css'], 'text/css' 55 87 56 88 # ITemplateProvider methods … … 61 93 62 94 def get_htdocs_dirs(self): 63 from pkg_resources import resource_filename64 95 yield ('themeengine', resource_filename(__name__, 'htdocs')) 65 96 if self.theme and 'htdocs' in self.theme: … … 77 108 node = node.next() 78 109 if prepend: 79 paths +=old_paths110 paths = paths + old_paths 80 111 hdf.removeTree('hdf.loadpaths') 81 112 hdf['hdf.loadpaths'] = paths themeengineplugin/0.10/themeengine/templates/footer/footer.cs
r1677 r1678 1 <?cs var:themeengine.footer ?>1 <?cs linclude:themeengine.footer ?> themeengineplugin/0.10/themeengine/templates/header/header.cs
r1677 r1678 1 <?cs var:themeengine.header ?>1 <?cs linclude:themeengine.header ?>
