def test_get_nav_root(self): folder = self.portal.get(self.portal.invokeFactory('Folder', 'folder')) self.assertEquals(self.portal, get_nav_root(folder)) self.assertEquals(self.portal, get_nav_root(self.portal)) doc = folder.get(folder.invokeFactory('Document', 'doc')) self.assertEquals(self.portal, get_nav_root(doc)) # Create a second document, because the first call with doc is cached doc2 = folder.get(folder.invokeFactory('Document', 'doc2')) alsoProvides(folder, INavigationRoot) self.assertEquals(folder, get_nav_root(doc2))
def getLanguage(self, langs, env): if not IFtwSubsiteLayer.providedBy(env): return base_negotiator.getLanguage(langs, env) # Get current published object obj = find_context(env) # Filter out CSS/JS and other non contentish objects # IFolderish check includes site root if not (IContentish.providedBy(obj) or IFolderish.providedBy(obj)): return base_negotiator.getLanguage(langs, env) nav_root = get_nav_root(obj) if ISubsite.providedBy(nav_root): # Get language stored on Subsite language = nav_root.force_language if language: return language else: return base_negotiator.getLanguage(langs, env) else: # Use normal Negotiator return base_negotiator.getLanguage(langs, env)
def get_subsite_language(request): """Returns None, or a language code.""" if not IFtwSubsiteLayer.providedBy(request): return None # Get current published object obj = find_context(request) # Filter out CSS/JS and other non contentish objects # IFolderish check includes site root if not (IContentish.providedBy(obj) or IFolderish.providedBy(obj)): return None nav_root = get_nav_root(obj) if ISubsite.providedBy(nav_root): # Get language stored on Subsite language = nav_root.force_language if language: return language else: return None else: return None
def __init__(self, context): super(SubsiteSitemapQueryBuilder, self).__init__(context) root = get_nav_root(context) self.query['path']['query'] = '/'.join(root.getPhysicalPath())