diff --git a/DjangoPlugin/tracdjangoplugin/plugins.py b/DjangoPlugin/tracdjangoplugin/plugins.py index cb00f3d..9e51e8d 100644 --- a/DjangoPlugin/tracdjangoplugin/plugins.py +++ b/DjangoPlugin/tracdjangoplugin/plugins.py @@ -5,8 +5,9 @@ from trac.web.chrome import INavigationContributor from trac.web.api import IRequestFilter, IRequestHandler, RequestDone from trac.web.auth import LoginModule +from trac.wiki.macros import WikiMacroBase from trac.wiki.web_ui import WikiModule -from trac.util.html import tag +from trac.util.html import Markup, tag from tracext.github import GitHubLoginModule, GitHubBrowser from django.conf import settings @@ -15,6 +16,33 @@ from django.utils.http import url_has_allowed_host_and_scheme +class MarkupMacro(WikiMacroBase): + """ + For trusted users (TODO: new/more appropriate permission bit?), + allow composing interactive HTML inside a Trac Wiki page, to + facilitate faster iteration on user experiences. + + Example usage in a Trac wiki page: + {{{#!Markup +
Response code
+ + + }}} + + Trac data could be fetched or markup could be rendered server-side + and called via `args`: + See https://trac.edgewall.org/wiki/WikiMacros#Macrowitharguments + """ + def expand_macro(self, formatter, name, content, args=None): + if "TICKET_EDIT_CC" in formatter.perm: # supertriagers + return Markup(content) + return Markup("

Not authorized

") # or raise? + + class CustomTheme(Component): implements(IRequestFilter)