Exemplo n.º 1
0
def calculateTopLevel(context, portlet, request=None):
    """Calculate top level of navigation menu to take care of 4th level menu
    NB : IFourthLevelNavigation is activated on the third level folder
    """
    if portlet.topLevel != 3 or not HAS_MENU:
        return portlet.topLevel
    portal = api.portal.get()
    contextPhyPath = context.getPhysicalPath()
    portalPhyPath = portal.getPhysicalPath()
    path = [
        elem for elem in list(contextPhyPath)
        if elem not in list(portalPhyPath)
    ]  # noqa
    depth = len(path)
    if depth >= 3 and 'dexterity-types' not in path:
        subLevels = depth - 3
        if subLevels:
            thirdLevelPath = '/'.join(contextPhyPath[:-subLevels])
        else:
            thirdLevelPath = '/'.join(contextPhyPath)
        thirdLevelFolder = portal.unrestrictedTraverse(thirdLevelPath)
        if IFourthLevelNavigation.providedBy(thirdLevelFolder):
            return 4
        if request:
            if IInMinisiteBase.providedBy(request):
                minisite_obj = get_minisite_object(request)
                if minisite_obj and IHNavigationActivated.providedBy(
                        minisite_obj):  # noqa
                    return get_minisite_navigation_level(minisite_obj) + 1
    return portlet.topLevel
Exemplo n.º 2
0
 def horizontalNavActivated(self):
     if not HAS_MINISITE:
         return False
     if not self.isInMinisite():
         return False
     request = self.request
     minisite_root = get_minisite_object(request)
     return IHNavigationActivated.providedBy(minisite_root)
Exemplo n.º 3
0
    def update(self):
        context = aq_inner(self.context)
        portal_tabs_view = getMultiAdapter((context, self.request),
                                           name='ms_portal_tabs_view')
        self.portal_tabs = portal_tabs_view.topLevelTabs()

        self.selected_tabs = self.selectedTabs(portal_tabs=self.portal_tabs)

        self.selected_portal_tab = self.selected_tabs['portal']
        self.minisite_root = get_minisite_object(self.request)
        self.actions = actions(self.request)
Exemplo n.º 4
0
def change_urls(soup, request, html_ids=[], html_classes=[]):
    """
    Change a href and img src urls from minisites to portal urls
    """
    minisite = request.get('cpskin_minisite', None)
    if not minisite:
        return
    minisite_obj = get_minisite_object(request)
    tags = [soup.find(id=html_id) for html_id in html_ids]
    for cl in html_classes:
        tags.extend(soup.find_all(class_=cl))
    for tag in tags:
        if tag is None:
            continue
        a_tags = tag.find_all('a')
        for a_tag in a_tags:
            href = a_tag.get('href')
            if not href:
                continue
            if minisite.minisite_url not in href:
                # external url
                continue
            end_of_url = href.replace(minisite.minisite_url, '')
            container = get_acquired_base_object(minisite_obj, end_of_url)
            if container is None:
                continue
            container_url = url_in_portal_mode(container, request)
            container_url = container_url.rstrip('/')
            a_tag['href'] = '{0}{1}'.format(container_url, end_of_url)
            a_tag['target'] = '_blank'
        img_tags = tag.find_all('img')
        for img_tag in img_tags:
            src = img_tag.get('src')
            if not src:
                continue
            if minisite.minisite_url not in src:
                # external url
                continue
            end_of_url = src.replace(minisite.minisite_url, '')
            container = get_acquired_base_object(minisite_obj, end_of_url)
            if container is None:
                continue
            container_url = url_in_portal_mode(container, request)
            container_url = container_url.rstrip('/')
            img_tag['src'] = '{0}{1}'.format(container_url, end_of_url)
Exemplo n.º 5
0
 def update(self):
     self.minisite_root = get_minisite_object(self.request)
     self.root_path = '/'.join(self.minisite_root.getPhysicalPath())
     self.actions = actions(self.request)
Exemplo n.º 6
0
 def __init__(self, context, request):
     super(MSHorizontalNavigationDisable, self).__init__(context, request)
     noLongerProvides(get_minisite_object(request), IHNavigationActivated)
     _redirect(self,
               msg=_(u'Minisite horizontal Navigation disabled on content'))
Exemplo n.º 7
0
 def can_disable_hnavigation(self):
     minisite_root = get_minisite_object(self.request)
     return self.is_in_minisite_mode and (
         IHNavigationActivated.providedBy(minisite_root))
Exemplo n.º 8
0
def redirect(event):
    white_list_name = [
        'portal_javascripts',
        'portal_css',
    ]
    white_list_end = (
        '.png',
        '.gif',
        '.ico',
        # '.jpeg',
        # '.jpg',
    )
    request = event.request
    parents = request['PARENTS']

    minisite_obj = get_minisite_object(request)
    if not minisite_obj:
        return

    minisite_index = parents.index(minisite_obj)
    first_child = parents[minisite_index - 1]
    if not safe_hasattr(first_child, 'getId'):
        return

    first_name = first_child.getId()
    if not first_name:
        return

    if first_name in white_list_name \
            or first_name.startswith('++') \
            or first_name.endswith(white_list_end):
        logger.debug('Found a white list {0}'.format(first_name))
        return

    if safe_hasattr(aq_base(minisite_obj), first_name):
        # no acquisition used here, object is in minisite
        logger.debug('No acquisition detected to {0}'.format(first_name))
        return

    obj = queryMultiAdapter((minisite_obj, request), name=first_name)
    if obj and not IItem.providedBy(obj):
        # it's a view
        logger.debug('Found a view for {0}'.format(first_name))
        return
    end_of_url = request['ACTUAL_URL'].replace(minisite_obj.absolute_url(), '')
    # sample : '/agenda/rss_feed_view'
    base_object = None
    if "/" in end_of_url:
        # we need to remove views / attribute from minisite object calculation
        context_end_url = end_of_url.split('@@')[0].strip("/")
        ends = context_end_url.split("/")
        ends.reverse()
        for end in ends:
            base_object = get_acquired_base_object(minisite_obj, end)
            if base_object is not None:
                break
    else:
        base_object = get_acquired_base_object(minisite_obj, end_of_url)
    redirect_base_url = url_in_portal_mode(base_object, request)
    redirect_base_url = redirect_base_url.rstrip('/')
    redirect_url = '{0}{1}'.format(redirect_base_url, end_of_url)

    logger.info('Redirecting to {0} {1}'.format(redirect_url, first_name))
    if redirect_url.endswith('/index_html'):
        redirect_url = redirect_url.replace('/index_html', '')
    raise Redirect(redirect_url)
Exemplo n.º 9
0
 def content(self):
     request = self.request
     minisite_obj = get_minisite_object(request)
     document = getattr(minisite_obj, 'footer-mini-site', None)
     return document