Changeset 3139
- Timestamp:
- 01/23/08 11:34:06 (1 year ago)
- Files:
-
- gitwebplugin/0.11/gitweb/htdocs/git-logo.png (added)
- gitwebplugin/0.11/gitweb/htdocs/gitweb-full.css (added)
- gitwebplugin/0.11/gitweb/htdocs/gitweb-trac.css (added)
- gitwebplugin/0.11/gitweb/templates/gitweb.html (modified) (1 diff)
- gitwebplugin/0.11/gitweb/templates/prefs_gitweb.html (added)
- gitwebplugin/0.11/gitweb/web_ui.py (modified) (7 diffs)
- gitwebplugin/0.11/setup.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gitwebplugin/0.11/gitweb/templates/gitweb.html
r2722 r3139 15 15 </head> 16 16 <body> 17 ${gitweb_page} 17 <div id="content" class="gitweb"> 18 ${gitweb_page} 19 </div> 18 20 </body> 19 21 </html> gitwebplugin/0.11/gitweb/web_ui.py
r2722 r3139 12 12 from trac.perm import IPermissionRequestor 13 13 from trac.mimeview.api import MIME_MAP as BASE_MIME_MAP 14 from trac.prefs.api import IPreferencePanelProvider 14 15 from trac.config import Option, BoolOption 15 16 from trac.util.text import to_unicode 17 from trac.util.translation import _ 16 18 17 19 from genshi.builder import tag … … 27 29 """A plugin to embed gitweb into Trac.""" 28 30 29 implements(IRequestHandler, INavigationContributor, IPermissionRequestor, ITemplateProvider )31 implements(IRequestHandler, INavigationContributor, IPermissionRequestor, ITemplateProvider, IPreferencePanelProvider) 30 32 31 33 gitweb_url = Option('gitweb', 'url', doc='URL to gitweb') … … 35 37 patterns = [ 36 38 # (regex, replacement) 37 (r'^.*?<div class', '<div class'), 38 (r'<\/body.*', ''), 39 (r'git\?{1,}a=git-logo.png', 'www/images/git.png'), 40 (r'[\'\"]\/git\?{0,}([^\'\"]*)', '"?\\1'), 41 (r'git\.do\?(\S+)?\;a\=rss', 'git?\\1;a=rss'), 39 (r'^.*?<div class', '<div class', False), 40 (r'<\/body.*', '', False), 41 (r'git\?{1,}a=git-logo.png', 'www/images/git.png', False), 42 (r'[\'\"]\/git\?{0,}([^\'\"]*)', '"?\\1', False), 43 (r'git\.do\?(\S+)?\;a\=rss', 'git?\\1;a=rss', False), 44 (r'<img src="git-logo.png" width="72" height="27" alt="git" class="logo"/>', 45 lambda req: '<img src="%s" width="72" height="27" alt="git" class="git-logo"/>' % \ 46 req.href.chrome('gitweb', 'git-logo.png'), True), 47 (r'<link rel="stylesheet" type="text/css" href="/pub/gitweb.css"/>', 48 lambda req: '<link rel="stylesheet" type="text/css" href="%s"/>\n<link rel="stylesheet" type="text/css" href="%s"/>' % \ 49 (req.href.chrome('gitweb', 'gitweb-full.css'), req.href.chrome('gitweb', 'gitweb-trac.css')), True), 42 50 ] 43 patterns = [(re.compile(pat, re.S|re.I|re.U), rep ) for pat, repin patterns]51 patterns = [(re.compile(pat, re.S|re.I|re.U), rep, chrome) for pat, rep, chrome in patterns] 44 52 45 53 # IRequestHandler methods … … 69 77 70 78 # Check for RSS 71 if args.get('a') == 'rss':79 if args.get('a') in ('rss', 'opml', 'project_index', 'atom'): 72 80 req.send(page, urlf.info().type) 73 81 74 82 # Proceed with normal page serving 83 chrome_enabled = req.session.get('gitweb_chrome_enabled', '0') == '1' 75 84 page = to_unicode(page) 76 for pat, rep in self.patterns: 77 page = pat.sub(rep, page) 85 for pat, rep, chrome in self.patterns: 86 if chrome_enabled or chrome: 87 if callable(rep): 88 rep = rep(req) 89 page = pat.sub(rep, page) 78 90 91 # If chrome wrapping is disabled, send back the page 92 if not chrome_enabled: 93 req.send(page, urlf.info().type) 94 79 95 data = { 80 96 'gitweb_page': Markup(page), … … 82 98 #add_link(req, 'stylesheet', 'http://dev.laptop.org/www/styles/gitbrowse.css', 'text/css') 83 99 add_stylesheet(req, 'gitweb/gitweb.css') 100 add_stylesheet(req, 'gitweb/gitweb-trac.css') 84 101 return 'gitweb.html', data, urlf.info().type 85 102 … … 87 104 def get_navigation_items(self, req): 88 105 if 'BROWSER_VIEW' in req.perm: 89 yield 'mainnav', 'gitweb', tag.a( 'Browse Source',106 yield 'mainnav', 'gitweb', tag.a(_('Browse Source'), 90 107 href=req.href.browser()) 91 108 … … 106 123 return [resource_filename(__name__, 'templates')] 107 124 125 # IPreferencePanelProvider methods 126 def get_preference_panels(self, req): 127 yield 'gitweb', _('Gitweb') 108 128 129 def render_preference_panel(self, req, panel): 130 if req.method == 'POST': 131 chrome_enabled = 'chrome_enabled' in req.args 132 req.session['gitweb_chrome_enabled'] = chrome_enabled and '1' or '0' 133 req.redirect(req.href.prefs('gitweb')) 134 135 data = { 136 'chrome_enabled': req.session.get('gitweb_chrome_enabled', '0') 137 } 138 return 'prefs_gitweb.html', data gitwebplugin/0.11/setup.py
r2722 r3139 20 20 ], 21 21 22 install_requires = [ ],22 install_requires = ['Trac'], 23 23 24 24 entry_points = {
