def _word_repl(self, word, text=None): """ Handle linked wiki page names. """ # check for parent links # !!! should use wikiutil.AbsPageName here, but setting `text` # correctly prevents us from doing this for now if (self.request.config.allow_subpages and word.startswith(self.PARENT_PREFIX)): alt_text = True # for making error prettier if not text: text = word alt_text = False base_pagename = self.formatter.page.proper_name() split_base_pagename = base_pagename.split('/') split_pagename = word.split('/') for entry in split_pagename: if entry == '..': try: split_base_pagename.pop() except IndexError: # Their link makes no sense if alt_text: return '["%s" %s]' % (word, text) else: return '["%s"]' % word else: split_base_pagename.append(entry) if split_base_pagename: word = split_base_pagename[0] if len(word) > 1: for entry in split_base_pagename[1:]: if entry: word += '/' + entry # is this a link to a user page? userpage_link = user.unify_userpage(self.request, word, text) if not text: text = word # if a simple, self-referencing link, emit it as plain text if self.is_a_page: if word.lower() == self.formatter.page.page_name: # Don't want to display ["Users/Myname"] as "Users/Myname" on # their Myname's user page. We display "Myname." if word.lower().startswith(config.user_page_prefix.lower()): text = word[len(config.user_page_prefix):] return text if (self.request.config.allow_subpages and word.startswith(wikiutil.CHILD_PREFIX)): word = self.formatter.page.proper_name() + word text = self.highlight_text(text) # need to do this for the side-effect of adding to pagelinks pagelink = self.formatter.pagelink(word, text) return userpage_link or pagelink
def where_wanted_from(wanted_results, macro): wanted = [] old_pagename_propercased = wanted_results[0][0] old_pagename = old_pagename_propercased.lower() num_links = 0 links = [] for w_result in wanted_results: if old_pagename.startswith(config.user_page_prefix.lower()): if user.unify_userpage(macro.request, old_pagename, old_pagename): theusername = old_pagename[len(config.user_page_prefix):] theuser = user.User(macro.request, name=theusername) if (theuser.wiki_for_userpage and (theuser.wiki_for_userpage != macro.request.config.wiki_name)): old_pagename_propercased = w_result[0] old_pagename = old_pagename_propercased.lower() continue new_pagename_propercased = w_result[0] new_pagename = new_pagename_propercased.lower() if old_pagename == new_pagename: num_links += 1 links.append(w_result[1]) else: # done counting -- we now append to the wanted list if not (old_pagename.startswith(config.user_page_prefix.lower()) and not showUsers(macro.request)): wanted.append((old_pagename_propercased, num_links, links)) num_links = 1 links = [w_result[1]] old_pagename_propercased = new_pagename_propercased old_pagename = old_pagename_propercased.lower() if not (old_pagename.startswith(config.user_page_prefix.lower()) and not showUsers(macro.request)): wanted.append((old_pagename_propercased, num_links, links)) return wanted
def _word_repl(self, word, text=None): """ Handle linked wiki page names. """ # check for parent links # !!! should use wikiutil.AbsPageName here, but setting `text` # correctly prevents us from doing this for now if (self.request.config.allow_subpages and word.startswith(self.PARENT_PREFIX)): alt_text = True # for making error prettier if not text: text = word alt_text = False base_pagename = self.formatter.page.proper_name() split_base_pagename = base_pagename.split('/') split_pagename = word.split('/') for entry in split_pagename: if entry == '..': try: split_base_pagename.pop() except IndexError: # Their link makes no sense if alt_text: return '["%s" %s]' % (word, text) else: return '["%s"]' % word else: split_base_pagename.append(entry) if split_base_pagename: word = split_base_pagename[0] if len(word) > 1: for entry in split_base_pagename[1:]: if entry: word += '/' + entry # is this a link to a user page? userpage_link = user.unify_userpage(self.request, word, text) if not text: text = word # if a simple, self-referencing link, emit it as plain text if self.is_a_page: if word.lower() == self.formatter.page.page_name: # Don't want to display ["Users/Myname"] as "Users/Myname" on # their Myname's user page. We display "Myname." if word.lower().startswith(config.user_page_prefix.lower()): text = word[len(config.user_page_prefix):] return text if (self.request.config.allow_subpages and word.startswith(wikiutil.CHILD_PREFIX)): word = self.formatter.page.proper_name() + word text = self.highlight_text(text) # need to do this for the side-effect of adding to pagelinks try: pagelink = self.formatter.pagelink(word, text) except Page.InvalidPageName, msg: from Sycamore.wikiaction import NOT_ALLOWED_CHARS not_allowed = ' '.join(NOT_ALLOWED_CHARS) msg = ('<em style="background-color: #ffffaa; padding: 2px;">' 'Invalid pagename: %s — The characters %s are not allowed in page' ' names.</em>' % (wikiutil.escape(word), wikiutil.escape(not_allowed))) pagelink = msg