Ticket #4144: relative-links-fix2.diff
| File relative-links-fix2.diff, 4.7 KB (added by Tim Hatch <trac@…>, 2 years ago) |
|---|
-
trac/wiki/formatter.py
23 23 import urllib 24 24 25 25 from StringIO import StringIO 26 from os.path import dirname 26 27 27 28 from trac.core import * 28 29 from trac.mimeview import * … … 230 231 _processor_re = re.compile('#\!([\w+-][\w+-/]*)') 231 232 _anchor_re = re.compile('[^\w:.-]+', re.UNICODE) 232 233 233 def __init__(self, env, req=None, absurls=False, db=None ):234 def __init__(self, env, req=None, absurls=False, db=None, itemurl=None): 234 235 self.env = env 235 236 self.req = req 236 237 self._db = db 238 self._itemurl = itemurl 237 239 self._absurls = absurls 238 240 self._anchors = {} 239 241 self._open_tags = [] … … 428 430 def _make_relative_link(self, url, text): 429 431 if url.startswith('//'): # only the protocol will be kept 430 432 return html.A(text, class_="ext-link", href=url) 433 elif self._itemurl and url and url[0] in "#.": 434 # This is for links that are hashref or relative, not those 435 # that have a leading slash (presumably relative to the 436 # server, not trac instance 437 if url[0] == "#": # hash ref 438 return html.A(text, href=self._itemurl+url) 439 else: # file link 440 return html.A(text, href=dirname(self._itemurl)+"/"+url) 431 441 else: 432 442 return html.A(text, href=url) 433 443 … … 861 871 """ 862 872 flavor = 'oneliner' 863 873 864 def __init__(self, env, absurls=False, db=None, req=None ):865 Formatter.__init__(self, env, req, absurls, db )874 def __init__(self, env, absurls=False, db=None, req=None, itemurl=None): 875 Formatter.__init__(self, env, req, absurls, db, itemurl) 866 876 867 877 # Override a few formatters to disable some wiki syntax in "oneliner"-mode 868 878 def _list_formatter(self, match, fullmatch): return match … … 998 1008 # -- wiki_to_* helper functions 999 1009 1000 1010 def wiki_to_html(wikitext, env, req, db=None, 1001 absurls=False, escape_newlines=False ):1011 absurls=False, escape_newlines=False, itemurl=None): 1002 1012 if not wikitext: 1003 1013 return Markup() 1004 1014 out = StringIO() 1005 Formatter(env, req, absurls, db ).format(wikitext, out, escape_newlines)1015 Formatter(env, req, absurls, db, itemurl=itemurl).format(wikitext, out, escape_newlines) 1006 1016 return Markup(out.getvalue()) 1007 1017 1008 1018 def wiki_to_oneliner(wikitext, env, db=None, shorten=False, absurls=False, 1009 req=None ):1019 req=None, itemurl=None): 1010 1020 if not wikitext: 1011 1021 return Markup() 1012 1022 out = StringIO() 1013 OneLinerFormatter(env, absurls, db, req=req).format(wikitext, out, shorten)1023 OneLinerFormatter(env, absurls, db, itemurl=itemurl, req=req).format(wikitext, out, shorten) 1014 1024 return Markup(out.getvalue()) 1015 1025 1016 1026 def wiki_to_outline(wikitext, env, db=None, -
templates/timeline.html
42 42 </a></dt> 43 43 <dd class="${event.kind}" py:with="wikify = event.use_oneliner and wiki_to_oneliner or wiki_to_html"> 44 44 ${event.markup} 45 <py:if test="event.message">${wikify(event.message )}</py:if>45 <py:if test="event.message">${wikify(event.message, itemurl=event.href)}</py:if> 46 46 </dd> 47 47 </py:for> 48 48 </dl> -
templates/wiki_diff.html
51 51 <dt class="property message">Comment:</dt> 52 52 <dd class="message" py:choose=""> 53 53 <em py:when="multi" class="multi">(multiple changes)</em> 54 <py:otherwise>${wiki_to_html(comment )}</py:otherwise>54 <py:otherwise>${wiki_to_html(comment, itemurl=href.wiki(page.name))}</py:otherwise> 55 55 </dd> 56 56 </dl> 57 57 <div class="diff"> -
templates/wiki_history.html
48 48 </td> 49 49 <td class="date">${format_datetime(item.date)}</td> 50 50 <td class="author" title="IP-Address: $item.ipnr">$item.author</td> 51 <td class="comment">${wiki_to_oneliner(item.comment )}</td>51 <td class="comment">${wiki_to_oneliner(item.comment, itemurl=href.wiki(page.name))}</td> 52 52 </tr> 53 53 </tbody> 54 54 </table>
