Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion DjangoPlugin/tracdjangoplugin/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
<div id="target">Response code</div>

<script>
fetch("/timeline").then(
resp => document.getElementById("target").innerHTML = resp.status
);
</script>
}}}

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("<p>Not authorized</p>") # or raise?


class CustomTheme(Component):
implements(IRequestFilter)

Expand Down
Loading