def interwiki(self, target_and_text, **kw): # TODO: maybe support [wiki:Page http://wherever/image.png] ? scheme, rest = target_and_text.split(':', 1) wikiname, pagename, text = wikiutil.split_wiki(rest) if not pagename: pagename = self.formatter.page.page_name if not text: text = pagename #self.request.log("interwiki: split_wiki -> %s.%s.%s" % (wikiname,pagename,text)) if wikiname.lower( ) == 'self': # [wiki:Self:LocalPage text] or [:LocalPage:text] return self._word_repl(pagename, text) # check for image URL, and possibly return IMG tag if not kw.get('pretty_url', 0) and wikiutil.isPicture(pagename): dummy, wikiurl, dummy, wikitag_bad = wikiutil.resolve_wiki( self.request, rest) href = wikiutil.join_wiki(wikiurl, pagename) #self.request.log("interwiki: join_wiki -> %s.%s.%s" % (wikiurl,pagename,href)) return self.formatter.image(src=href) return (self.formatter.interwikilink(1, wikiname, pagename) + self.formatter.text(text) + self.formatter.interwikilink(0, wikiname, pagename))
def _url_bracket_repl(self, word): """Handle bracketed URLs.""" word = word[1:-1] # strip brackets # Local extended link? [:page name:link text] XXX DEPRECATED if word[0] == ':': words = word[1:].split(':', 1) if len(words) == 1: words = words * 2 target_and_text = 'wiki:Self:%s %s' % (wikiutil.quoteName( words[0]), words[1]) return self.interwiki(target_and_text, pretty_url=1) scheme_and_rest = word.split(":", 1) if len(scheme_and_rest) == 1: # no scheme # Traditional split on space words = word.split(None, 1) if len(words) == 1: words = words * 2 if words[0].startswith('#'): # anchor link return (self.formatter.url(1, words[0]) + self.formatter.text(words[1]) + self.formatter.url(0)) else: scheme, rest = scheme_and_rest if scheme == "wiki": return self.interwiki(word, pretty_url=1) if scheme in self.attachment_schemas: return self.attachment(word, pretty_url=1) words = word.split(None, 1) if len(words) == 1: words = words * 2 if wikiutil.isPicture(words[1]) and re.match(self.url_rule, words[1]): return ( self.formatter.url(1, words[0], css='external', do_escape=0) + self.formatter.image( title=words[0], alt=words[0], src=words[1]) + self.formatter.url(0)) else: return (self.formatter.url(1, words[0], css=scheme, do_escape=0) + self.formatter.text(words[1]) + self.formatter.url(0))
def _url_repl(self, word): """Handle literal URLs including inline images.""" scheme = word.split(":", 1)[0] if scheme == "wiki": return self.interwiki(word) if scheme in self.attachment_schemas: return self.attachment(word) if wikiutil.isPicture(word): word = wikiutil.mapURL(self.request, word) # Get image name http://here.com/dir/image.gif -> image name = word.split('/')[-1] name = ''.join(name.split('.')[:-1]) return self.formatter.image(src=word, alt=name) else: return (self.formatter.url(1, word, css=scheme) + self.formatter.text(word) + self.formatter.url(0))
def _url_bracket_repl(self, word): """Handle bracketed URLs.""" word = word[1:-1] # strip brackets # Local extended link? [:page name:link text] XXX DEPRECATED if word[0] == ':': words = word[1:].split(':', 1) if len(words) == 1: words = words * 2 target_and_text = 'wiki:Self:%s %s' % (wikiutil.quoteName(words[0]), words[1]) return self.interwiki(target_and_text, pretty_url=1) scheme_and_rest = word.split(":", 1) if len(scheme_and_rest) == 1: # no scheme # Traditional split on space words = word.split(None, 1) if len(words) == 1: words = words * 2 if words[0].startswith('#'): # anchor link return (self.formatter.url(1, words[0]) + self.formatter.text(words[1]) + self.formatter.url(0)) else: scheme, rest = scheme_and_rest if scheme == "wiki": return self.interwiki(word, pretty_url=1) if scheme in self.attachment_schemas: return self.attachment(word, pretty_url=1) words = word.split(None, 1) if len(words) == 1: words = words * 2 if wikiutil.isPicture(words[1]) and re.match(self.url_rule, words[1]): return (self.formatter.url(1, words[0], css='external', do_escape=0) + self.formatter.image(title=words[0], alt=words[0], src=words[1]) + self.formatter.url(0)) else: return (self.formatter.url(1, words[0], css=scheme, do_escape=0) + self.formatter.text(words[1]) + self.formatter.url(0))
def attachment(self, target_and_text, **kw): """ This gets called on attachment URLs """ _ = self._ #self.request.log("attachment: target_and_text %s" % target_and_text) scheme, fname, text = wikiutil.split_wiki(target_and_text) if not text: text = fname if scheme == 'drawing': return self.formatter.attachment_drawing(fname, text) # check for image, and possibly return IMG tag (images are always inlined) if not kw.get('pretty_url', 0) and wikiutil.isPicture(fname): return self.formatter.attachment_image(fname) # inline the attachment if scheme == 'inline': return self.formatter.attachment_inlined(fname, text) return self.formatter.attachment_link(fname, text)
def interwiki(self, target_and_text, **kw): # TODO: maybe support [wiki:Page http://wherever/image.png] ? scheme, rest = target_and_text.split(':', 1) wikiname, pagename, text = wikiutil.split_wiki(rest) if not pagename: pagename = self.formatter.page.page_name if not text: text = pagename #self.request.log("interwiki: split_wiki -> %s.%s.%s" % (wikiname,pagename,text)) if wikiname.lower() == 'self': # [wiki:Self:LocalPage text] or [:LocalPage:text] return self._word_repl(pagename, text) # check for image URL, and possibly return IMG tag if not kw.get('pretty_url', 0) and wikiutil.isPicture(pagename): dummy, wikiurl, dummy, wikitag_bad = wikiutil.resolve_wiki(self.request, rest) href = wikiutil.join_wiki(wikiurl, pagename) #self.request.log("interwiki: join_wiki -> %s.%s.%s" % (wikiurl,pagename,href)) return self.formatter.image(src=href) return (self.formatter.interwikilink(1, wikiname, pagename) + self.formatter.text(text) + self.formatter.interwikilink(0, wikiname, pagename))