Ticket #2703: ticket_comment_link.diff
| File ticket_comment_link.diff, 4.1 KB (added by cboos, 3 years ago) |
|---|
-
htdocs/css/trac.css
42 42 color: inherit; 43 43 } 44 44 45 /* Heading anchors */ 46 .anchor:link, .anchor:visited { 47 border: none; 48 color: #d7d7d7; 49 font-size: .8em; 50 vertical-align: text-top; 51 visibility: hidden; 52 } 53 h1:hover .anchor, h2:hover .anchor, h3:hover .anchor, 54 h4:hover .anchor, h5:hover .anchor, h6:hover .anchor { 55 visibility: visible; 56 } 57 45 58 @media screen { 46 59 a.ext-link .icon { 47 60 background: url(../extlink.gif) left center no-repeat; -
htdocs/css/wiki.css
22 22 #overview .ipnr { color: #999; font-size: 80% } 23 23 #overview .comment { padding: 1em 0 0 } 24 24 25 /* Heading anchors */26 .anchor:link, .anchor:visited {27 border: none;28 color: #d7d7d7;29 font-size: .8em;30 vertical-align: text-top;31 visibility: hidden;32 }33 h1:hover .anchor, h2:hover .anchor, h3:hover .anchor,34 h4:hover .anchor, h5:hover .anchor, h6:hover .anchor {35 visibility: visible;36 }37 38 25 /* Styles for the page history table 39 26 (extends the styles for "table.listing") */ 40 27 #wikihist td { padding: 0 .5em } -
trac/ticket/api.py
146 146 147 147 def get_link_resolvers(self): 148 148 return [('bug', self._format_link), 149 ('ticket', self._format_link)] 149 ('ticket', self._format_link), 150 ('comment', self._format_comment_link)] 150 151 151 152 def get_wiki_syntax(self): 152 153 yield ( … … 174 175 return '<a class="missing ticket" href="%s" rel="nofollow">%s</a>' \ 175 176 % (formatter.href.ticket(target), label) 176 177 178 def _format_comment_link(self, formatter, ns, target, label): 179 href = None 180 if ':' in target: 181 elts = target.split(':') 182 if len(elts) == 3: 183 type, id, comment_number = elts 184 if type == 'ticket': 185 href = formatter.href(type, id) 186 else: 187 # FIXME: the formatter should know which object the text being 188 # formatter belongs to 189 type, id = 'wiki', 'WikiStart' 190 if formatter.req: 191 path_info = formatter.req.path_info.split('/', 2) 192 if len(path_info) > 1: 193 type = path_info[1] 194 # assume type == ticket 195 if len(path_info) > 2: 196 id = path_info[2] 197 href = formatter.href.ticket(id) 198 comment_number = target 199 try: 200 comment_number = int(comment_number) - 1 201 except ValueError: 202 href = None 203 if href: 204 return ('<a href="%s#change_%s" title="Comment %s on %s:%s">' 205 '%s</a>' % (href, comment_number, comment_number, type, id, 206 label)) 207 else: 208 return label 209 177 210 178 211 # ISearchSource methods 179 212 -
templates/ticket.cs
99 99 100 100 <?cs if:len(ticket.changes) ?><h2>Change History</h2> 101 101 <div id="changelog"><?cs 102 each:change = ticket.changes ?> 103 <h3 id="change_<?cs var:name(change) ?>" class="change"><?cs 104 var:change.date ?>: Modified by <?cs var:change.author ?></h3><?cs 102 each:change = ticket.changes ?><?cs 103 set number=name(change) ?> 104 <h3 id="change_<?cs var:number ?>" class="change"><?cs 105 var:change.date ?>: Modified by <?cs var:change.author ?> 106 <a href="#change_<?cs var:number ?>" class="anchor" 107 title="Permalink to comment:<?cs var:#number+1 ?>"> 108 ¶</a></h3><?cs 105 109 if:len(change.fields) ?> 106 110 <ul class="changes"><?cs 107 111 each:field = change.fields ?>
