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 97782d8..37f0542 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -553,6 +553,14 @@ factory="loops.browser.concept.ListTypeInstances" permission="zope.View" /> + + + diff --git a/layout/base.py b/layout/base.py index 8a0e6eb..9cae325 100644 --- a/layout/base.py +++ b/layout/base.py @@ -158,4 +158,5 @@ class TargetLayoutInstance(NodeLayoutInstance): target = self.viewAnnotations.get('target') if target is None: target = adapted(self.context.target) + #self.viewAnnotations['target'] = target # TODO: has to be tested! return target diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 2029589..45b1e4c 100644 Binary files a/locales/de/LC_MESSAGES/loops.mo and b/locales/de/LC_MESSAGES/loops.mo differ diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index bea0e51..ca2a770 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: 0.13.0\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2013-04-01 12:00 CET\n" +"PO-Revision-Date: 2013-04-06 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -241,6 +241,9 @@ msgstr "Trifft für unser Unternehmen voll und ganz zu" msgid "Evaluate Questionnaire" msgstr "Fragebogen auswerten" +msgid "Reset Responses Entered" +msgstr "Eingaben zurücksetzen" + msgid "Back to Questionnaire" msgstr "Zurück zum Fragebogen" diff --git a/organize/browser/configure.zcml b/organize/browser/configure.zcml index 91d40f1..e351efa 100644 --- a/organize/browser/configure.zcml +++ b/organize/browser/configure.zcml @@ -27,6 +27,18 @@ class="loops.organize.browser.member.MemberRegistration" permission="zope.View" /> + + + + + + + + diff --git a/organize/stateful/browser.py b/organize/stateful/browser.py index 8dc1069..5b77b7d 100644 --- a/organize/stateful/browser.py +++ b/organize/stateful/browser.py @@ -43,6 +43,16 @@ statefulActions = ('classification_quality', 'publishable_task',) +def registerStatesPortlet(controller, view, statesDefs, + region='portlet_right', priority=98): + cm = controller.macros + stfs = [component.getAdapter(view.context, IStateful, name=std) + for std in statesDefs] + cm.register(region, 'states', title=_(u'States'), + subMacro=template.macros['portlet_states'], + priority=priority, info=view, stfs=stfs) + + class StateAction(Action): url = None diff --git a/organize/stateful/view_macros.pt b/organize/stateful/view_macros.pt index 6dfad17..d1be431 100644 --- a/organize/stateful/view_macros.pt +++ b/organize/stateful/view_macros.pt @@ -68,4 +68,32 @@ + + + +
+
+ Workflow + +
+
+ State: + +
+
+
Available Transitions:
+
+
+
+ + + diff --git a/organize/tracking/base.py b/organize/tracking/base.py index f8a1323..645e091 100644 --- a/organize/tracking/base.py +++ b/organize/tracking/base.py @@ -20,6 +20,7 @@ Base class(es) for track/record managers. """ +from zope.app.security.interfaces import IUnauthenticatedPrincipal from zope.cachedescriptors.property import Lazy from cybertools.meta.interfaces import IOptions @@ -65,6 +66,8 @@ class BaseRecordManager(object): else: principal = getPrincipalForUserId(userId, context=self.context) if principal is not None: + if IUnauthenticatedPrincipal.providedBy(principal): + return None person = getPersonForUser(self.context, principal=principal) if person is None: return principal.id