def describe(self, page, path, actives): data = {} if self.name is not None: data["name"] = page.translate(self.name) elif self.logo is not None: data["logo"] = self.logo if self.screen is not None: is_screen = False if IRESTComponent.implementedBy(self.screen): for active in actives: if isinstance(active, self.screen): data["active"] = True break is_screen = IUIScreen.implementedBy(self.screen) elif self.interface is not None: for active in actives: if self.interface.providedBy(active): data["active"] = True break is_screen = self.interface.extends(IUIScreen) if is_screen: screen = self.identifier() data["screen"] = "/".join((path, screen)) if path else screen if self.action is not None: data["action"] = self.action if self.description is not None: data["description"] = page.translate(self.description) if self.accesskey is not None: data["accesskey"] = self.accesskey if self.icon is not None: data["icon"] = self.icon return data
def available(self): # We are available if we have sublevel menu or a screen. return ( (len(self.submenu) != 0) or IUIScreen.implementedBy(self.screen) or (IInterface.providedBy(self.interface) and self.interface.extends(IUIScreen)) )