Example #1
0
    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
Example #2
0
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
Example #3
0
    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 &mdash; The characters %s are not allowed in page'
                   ' names.</em>' % (wikiutil.escape(word), wikiutil.escape(not_allowed)))
            pagelink = msg