def index(self):
        context = aq_inner(self.context)

        container = aq_parent(context)

        if isDefaultPage(container, context):
            context = container

        originalcontext = context

        # avoid redirecting if we are visiting an url different from the url of the context
        viewname = self.context.getLayout()
        if self.request.URL != self.context.absolute_url() and self.request.URL != self.context.absolute_url() + '/' + viewname:
            return ''

        while all([not INavigationRoot.providedBy(context),
                   IRedirectToParent.providedBy(context)]):
#            contextid = context.id
            context = aq_parent(context)

        if context != originalcontext:
            viewurl = getMultiAdapter((context, self.request), name='plone_context_state').view_url()
            return u'<a class="redirect-to-parent" href="%s">%s</a>' % (viewurl + '#content=' + originalcontext.absolute_url(),context.Title())
        else:
            return ''
    def index(self):
        sm = getSecurityManager()
        context = aq_inner(self.context)
        container = aq_parent(context)

        if isDefaultPage(container, context):
            context = container


        # avoid redirecting if we are visiting an url different from the url of the context
        viewname = self.context.getLayout()
        if self.request.URL != self.context.absolute_url() and self.request.URL != self.context.absolute_url() + '/' + viewname:
            return ''

        originalcontext = context

        while all([not INavigationRoot.providedBy(context),
                   IRedirectToParent.providedBy(context), 
                   not sm.checkPermission(ModifyPortalContent, context)]):
#            contextid = context.id
            context = aq_parent(context)

        if context != originalcontext:
            viewurl = getMultiAdapter((context, self.request), name='plone_context_state').view_url()
            self.request.RESPONSE.redirect(viewurl + '#content=' + originalcontext.absolute_url())

        return ''
    def __call__(self):
        context = aq_inner(self.context)
        container = aq_parent(context)

        if isDefaultPage(container, context):
            context = container

        return IRedirectToParent.providedBy(context)
    def __call__(self):

        context = aq_inner(self.context)
        container = aq_parent(context)

        if isDefaultPage(container, context):
            context = container

        if IPloneSiteRoot.providedBy(context) or INavigationRoot.providedBy(context):
            self.request.RESPONSE.redirect(self.viewurl)

        if IRedirectToParent.providedBy(context):
            noLongerProvides(context, IRedirectToParent)
        else:
            alsoProvides(context, IRedirectToParent)

        self.request.RESPONSE.redirect(self.viewurl)