def subMenuItem(self, _context, submenu, title, description=u'',
                    action=u'', icon=None, filter=None, permission=None,
                    extra=None, order=0, item_class=None):
        filter = Engine.compile(filter) if filter is not None else None

        if permission is None:
            permission = self.permission

        if order == 0:
            order = _order_counter.get(self.for_, 1)
            _order_counter[self.for_] = order + 1

        if item_class is None:
            item_class = self.subMenuItemClass

        if not IBrowserSubMenuItem.implementedBy(item_class):
            raise ValueError("Item class (%s) must implement IBrowserSubMenuItem" % item_class)

        factory = MenuItemFactory(
            item_class,
            title=title, description=description, icon=icon, action=action,
            filter=filter, permission=permission, extra=extra, order=order,
            _for=self.for_, submenuId=submenu)
        adapter(_context, (factory,), self.menuItemType,
                (self.for_, self.layer), name=title)
Example #2
0
    def subMenuItem(self,
                    _context,
                    submenu,
                    title,
                    description=_u(''),
                    action=_u(''),
                    icon=None,
                    filter=None,
                    permission=None,
                    extra=None,
                    order=0,
                    item_class=None):

        if filter is not None:
            filter = Engine.compile(filter)

        if permission is None:
            permission = self.permission

        if order == 0:
            order = _order_counter.get(self.for_, 1)
            _order_counter[self.for_] = order + 1

        if item_class is None:
            item_class = self.subMenuItemClass

        if not IBrowserSubMenuItem.implementedBy(item_class):
            raise ValueError(
                "Item class (%s) must implement IBrowserSubMenuItem" %
                item_class)

        factory = MenuItemFactory(item_class,
                                  title=title,
                                  description=description,
                                  icon=icon,
                                  action=action,
                                  filter=filter,
                                  permission=permission,
                                  extra=extra,
                                  order=order,
                                  _for=self.for_,
                                  submenuId=submenu)
        adapter(_context, (factory, ),
                self.menuItemType, (self.for_, self.layer),
                name=title)