Opened 8 years ago
Closed 8 years ago
#12916 closed defect (fixed)
TracError message cannot contain a div
| Reported by: | Ryan J Ollos | Owned by: | Ryan J Ollos |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.2.3 |
| Component: | general | Version: | |
| Severity: | normal | Keywords: | |
| Cc: | Branch: | ||
| Release Notes: |
Fixed incorrect rendering of |
||
| API Changes: | |||
| Internal Changes: | |||
Description (last modified by )
SpamFilter raises an error with a div wrapping a list.
self.reject_handler.reject_content( req, tag.div( tag_('Submission rejected as potential spam %(message)s', message=msg), class_='message'))
This doesn't render correctly.
<h1>Trac Error</h1> <p class="message"></p> <div class="message">Submission rejected as potential spam <ul> <li>BlogSpam says content is spam (IP previously blocked: Anchor text matches pattern: payday loan [20-ip.js])</li> </ul> </div>
It seems reasonable that the user raising the TracError would want to render content like a list in a div, so we probably shouldn't restrict to p elements.
One way to deal with this would be to look for the message class rather than a p element when deciding whether to wrap the error message with p.message:
-
trac/templates/error.html
diff --git a/trac/templates/error.html b/trac/templates/error.html index a17078d17..1fb241c65 100644
a b ${description_en if url else description}</textarea> 81 81 <py:when test="'TracError'"> 82 82 <h1>$title</h1> 83 83 <py:choose test=""> 84 <p py:when="not find_element(message, tag='p')" class="message">$message</p>84 <p py:when="not find_element(message, cls='message')" class="message">$message</p> 85 85 <py:otherwise>$message</py:otherwise> 86 86 </py:choose> 87 87 </py:when>
Attachments (2)
Change History (8)
by , 8 years ago
| Attachment: | Screen Shot 2017-09-13 at 17.17.12.png added |
|---|
comment:1 by , 8 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 8 years ago
| Milestone: | 1.3.3 → 1.2.3 |
|---|
comment:3 by , 8 years ago
comment:4 by , 8 years ago
The comment from r5299 needs to be revised. As of r5299, the entire exception message was wrapped in a p.message, not everything up to the first <p>.
The behavior was changed in r5388 ([5388#file4]), and modified again in #11368.
DONE update the docstring of TracError class.
I suppose we should mainly avoid wrapping with a p any fragment or element containing a block-level element, so it may be enough to add not find_element(message, tag='div') to the conditional.
by , 8 years ago
| Attachment: | Screen Shot 2017-09-30 at 17.31.52.png added |
|---|
comment:5 by , 8 years ago
| Release Notes: | modified (diff) |
|---|
Proposed changes in [5244275bc/rjollos.git].
comment:6 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |





Related changes in r16321 and r16322.
I considered a workaround for SpamFilter,
1.2/tracspamfilter/filtersystem.py
r))however, I think it's probably better to just fix on Trac 1.2-stable.