def expand_macro(self, formatter, name, content): from trac.mimeview.api import Mimeview mime_map = Mimeview(self.env).mime_map mime_type_filter = '' args, kw = parse_args(content) if args: mime_type_filter = args.pop(0).strip().rstrip('*') mime_types = {} for key, mime_type in mime_map.iteritems(): if (not mime_type_filter or mime_type.startswith(mime_type_filter) ) and key != mime_type: mime_types.setdefault(mime_type, []).append(key) return tag.div(class_='mimetypes')( tag.table(class_='wiki')( tag.thead( tag.tr( tag.th(_("MIME Types")), # always use plural tag.th( tag.a("WikiProcessors", href=formatter.context.href.wiki( 'WikiProcessors'))))), tag.tbody( tag.tr( tag.th(tag.code(mime_type), style="text-align: left"), tag.td( tag.code(' '.join(sorted(mime_types[mime_type]))))) for mime_type in sorted(mime_types))))
def expand_macro(self, formatter, name, content): intertracs = {} for key, value in self.intertrac_section.options(): idx = key.rfind('.') if idx > 0: # 0 itself doesn't help much: .xxx = ... prefix, attribute = key[:idx], key[idx+1:] intertrac = intertracs.setdefault(prefix, {}) intertrac[attribute] = value else: intertracs[key] = value # alias if 'trac' not in intertracs: intertracs['trac'] = {'title': _('The Trac Project'), 'url': 'http://trac.edgewall.org'} def generate_prefix(prefix): intertrac = intertracs[prefix] if isinstance(intertrac, basestring): yield tag.tr(tag.td(tag.strong(prefix)), tag.td(tag_("Alias for %(name)s", name=tag.strong(intertrac)))) else: url = intertrac.get('url', '') if url: title = intertrac.get('title', url) yield tag.tr(tag.td(tag.a(tag.strong(prefix), href=url + '/timeline')), tag.td(tag.a(title, href=url))) return tag.table(class_="wiki intertrac")( tag.tr(tag.th(tag.em(_("Prefix"))), tag.th(tag.em(_("Trac Site")))), [generate_prefix(p) for p in sorted(intertracs)])
def expand_macro(self, formatter, name, content): interwikis = [] for k in sorted(self.keys()): prefix, url, title = self[k] interwikis.append({ 'prefix': prefix, 'url': url, 'title': title, 'rc_url': self._expand_or_append(url, ['RecentChanges']), 'description': url if title == prefix else title}) return tag.table(tag.tr(tag.th(tag.em(_("Prefix"))), tag.th(tag.em(_("Site")))), [tag.tr(tag.td(tag.a(w['prefix'], href=w['rc_url'])), tag.td(tag.a(w['description'], href=w['url']))) for w in interwikis ], class_="wiki interwiki")
def expand_macro(self, formatter, name, content): content = content.strip() if content else '' name_filter = content.strip('*') items = {} for subscriber in NotificationSystem(self.env).subscribers: name = subscriber.__class__.__name__ if not name_filter or name.startswith(name_filter): items[name] = subscriber.description() return tag.div(class_='trac-subscriberlist')(tag.table(class_='wiki')( tag.thead(tag.tr(tag.th(_("Subscriber")), tag.th(_("Description")))), tag.tbody( tag.tr(tag.td(tag.code(name)), tag.td(items[name]), class_='odd' if idx % 2 else 'even') for idx, name in enumerate(sorted(items)))))
def annotate(self, row, lineno): if lineno > len(self.annotations): row.append(tag.th()) return rev = self.annotations[lineno - 1] chgset = self.changesets[lineno - 1] path = self.paths.get(rev) # Note: path will be None if copy/rename is not supported # by get_history # -- compute anchor and style once per revision if rev not in self.chgset_data: chgset_href = \ self.context.href.changeset(rev, self.repos.reponame or None, path) short_author = chgset.author.split(' ', 1)[0] title = shorten_line('%s: %s' % (short_author, chgset.message)) anchor = tag.a( '[%s]' % self.repos.short_rev(rev), # shortname title=title, href=chgset_href) color = self.colorize_age(self.timerange.relative(chgset.date)) style = 'background-color: rgb(%d, %d, %d);' % color self.chgset_data[rev] = (anchor, style) else: anchor, style = self.chgset_data[rev] if self.prev_chgset != chgset: self.prev_style = style # optimize away the path if there's no copy/rename info if not path or path == self.path: path = '' # -- produce blame column, eventually with an anchor style = self.prev_style if lineno < len(self.changesets) and self.changesets[lineno] == chgset: style += ' border-bottom: none;' blame_col = tag.th(style=style, class_='blame r%s' % rev) if self.prev_chgset != chgset: blame_col.append(anchor) self.prev_chgset = chgset row.append(blame_col)
def _head_row(): return tag.tr([ tag.th(labels[a], class_=a, title=titles[a]) for a in annotations ] + [tag.th(u'\xa0', class_='content')])
def annotate_row(self, context, row, lineno, line, data): lineno += data['offset'] id = data['id'] % lineno if data['marks'] and lineno in data['marks']: row(class_='hilite') row.append(tag.th(id=id)(tag.a(lineno, href='#' + id)))