Exemplo n.º 1
0
    def can_enable_direct_access(self):
        """ Helper method used by the actions to know if they should
        be displayed or not
        """
        context = self._get_real_context()

        sm = getSecurityManager()
        if not sm.checkPermission("Portlets: Manage portlets", context):
            return False

        depth = len(context.getPhysicalPath()[2:])
        if depth >= 3 and not IDirectAccess.providedBy(context):
            return True
        else:
            return False
Exemplo n.º 2
0
    def _menuitem(self, item, tabindex, first=False, last=False, menu_level=0):
        classes = []

        if first:
            classes.append('firstItem')
        if last:
            classes.append('lastItem')
        if item['currentParent']:
            classes.append('navTreeItemInPath')

        brain = item['item']

        if type(brain) == VirtualCatalogBrain:
            # translate our portal_actions and use their id instead of the
            # url
            title = translate(brain.Title, context=self.request)
            desc = translate(brain.Description, context=self.request)
            url = brain.url.strip(self.context.portal_url())
            item_id = brain.id
        else:
            title = safe_unicode(brain.Title)
            desc = safe_unicode(brain.Description)
            url = brain.getPath()
            item_id = brain.getURL()[len(self.site_url):]

        item_id = item_id.strip('/').replace('/', '-')

        children = item['children']

        """
            plone (portal root)
            |
            `-- 1: Commune (*) (Not generated by this script)
                `-- 2: Services communaux (0) (Parent of the Direct Access)
                    `-- 3: Finances (1) (Direct access, Parent of the fourth level)
                        `-- 4: Tata (2) (Fourth level)

        """
        if self.mobile:
            direct_access_level = 1
            fourth_menu_level = 2
        else:
            # Level of PARENT of the level showing the Direct access
            direct_access_level = 0
            # Level of PARENT of the fourth level
            fourth_menu_level = 1

        if menu_level == direct_access_level:
            queryDict = {}
            queryDict['path'] = {'query': url, 'depth': 10}
            queryDict['object_provides'] = 'cpskin.menu.interfaces.IDirectAccess'
            catalog = getToolByName(self.context, 'portal_catalog')

            direct_access_catalog = catalog(queryDict)
            direct_access = []
            normal_children = []
            for child in children:
                normal_children.append(child)
            for element in direct_access_catalog:
                direct_access.append({'item': element,
                                      'depth': 1,
                                      'children': [],
                                      'currentParent': False,
                                      'currentItem': False})
            if direct_access:
                submenu_render = self._submenu(
                    normal_children,
                    tabindex,
                    menu_level=menu_level + 1,
                    menu_classnames='has_direct_access',
                    close_button=False) or u""
                submenu_render += self._submenu(
                    direct_access,
                    tabindex,
                    menu_level=menu_level + 1,
                    menu_classnames='direct_access',
                    close_button=True,
                    direct_access=True) or u""
            else:
                submenu_render = self._submenu(
                    children,
                    tabindex,
                    menu_level=menu_level + 1,
                    menu_classnames='no_direct_access',
                    close_button=True) or u""
        elif menu_level == fourth_menu_level:
            if IDirectAccess.providedBy(item['item'].getObject()):
                submenu_render = u""
            else:
                helper_view = getMultiAdapter((item['item'].getObject(), self.request), name=u'multilevel-navigation')
                if helper_view.is_enabled:
                    submenu_render = self._submenu(
                        children,
                        tabindex,
                        menu_level=menu_level + 1,
                        close_button=True) or u""
                else:
                    submenu_render = u""
        else:
            submenu_render = self._submenu(
                children,
                tabindex,
                menu_level=menu_level + 1,
                close_button=True) or u""

        return self._menu_item % dict(
            menu_id=self.menu_id,
            id=item_id,
            tabindex=tabindex,
            level=menu_level,
            title=self.html_escape(title),
            description=self.html_escape(desc),
            url=item['item'].getURL(),
            classnames=len(classes) and u' class="%s"' % (" ".join(classes)) or u"",
            selected=item['currentItem'] and u' class="selected"' or u"",
            submenu=submenu_render)
Exemplo n.º 3
0
 def is_enabled(self):
     context = self._get_real_context()
     return IDirectAccess.providedBy(context)