From 320e83c602c5b9a630a4926bc3d64cf20cb03733 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 27 Apr 2013 15:07:11 +0200 Subject: [PATCH] provide tabbed page concept type for showing sub-queries as tabs --- browser/concept.py | 30 +++++++++++++++++++++++++++++- browser/configure.zcml | 8 ++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/browser/concept.py b/browser/concept.py index c94dce3..b550830 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2012 Helmut Merz helmutm@cy55.de +# Copyright (c) 2013 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -50,6 +50,7 @@ from cybertools.meta.interfaces import IOptions from cybertools.typology.interfaces import IType, ITypeManager from cybertools.util.jeep import Jeep from loops.browser.common import EditForm, BaseView, LoopsTerms, concept_macros +from loops.browser.common import ViewMode from loops.common import adapted from loops.concept import Concept, ConceptTypeSourceList, PredicateSourceList from loops.i18n.browser import I18NView @@ -746,3 +747,30 @@ class ListTypeInstances(ListChildren): noDuplicates, useFilter, [self.typePredicate]): yield c + +class TabbedPage(ConceptView): + + @Lazy + def subpagePredicates(self): + pred = self.conceptManager.get('issubpage') + if pred is None: + pred = self.isPartOfPredicate + return [pred] + + def viewModes(self): + modes = Jeep() + for s in self.getSiblings(self.subpagePredicates): + url = self.nodeView.getUrlForTarget(s) + modes.append(ViewMode(getName(s), s.title, url)) + if not modes: + return modes + modes[getName(self.context)].active = True + return modes + + def getSiblings(self, preds): + for p in self.context.getParents(preds): + parent = p + break + else: + return [] + return p.getChildren(preds) diff --git a/browser/configure.zcml b/browser/configure.zcml index f6f3695..70f3b2c 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -553,6 +553,14 @@ factory="loops.browser.concept.ListTypeInstances" permission="zope.View" /> + +