diff --git a/expert/browser/search.py b/expert/browser/search.py
index 7fd6cb0..d235d4d 100644
--- a/expert/browser/search.py
+++ b/expert/browser/search.py
@@ -70,7 +70,9 @@ class QuickSearchResults(NodeView):
fv = FilterView(self.context, self.request)
result = fv.apply(result)
result.sort(key=lambda x: x.title.lower())
- return self.viewIterator(result)
+ for v in self.viewIterator(result):
+ if v.checkState():
+ yield v
class Search(ConceptView):
@@ -257,8 +259,6 @@ class Search(ConceptView):
return self.viewIterator(result)
def checkStates(self, obj):
- if not IResource.providedBy(obj):
- return True
for std, states in self.selectedStates.items():
if std.startswith('state.resource.'):
std = std[len('state.resource.'):]
diff --git a/knowledge/survey/configure.zcml b/knowledge/survey/configure.zcml
index 423889d..a205abd 100644
--- a/knowledge/survey/configure.zcml
+++ b/knowledge/survey/configure.zcml
@@ -12,6 +12,8 @@
+
@@ -23,6 +25,8 @@
+
@@ -34,6 +38,8 @@
+
@@ -45,6 +51,8 @@
+
diff --git a/layout/browser/base.py b/layout/browser/base.py
index a6494d2..b5039b8 100644
--- a/layout/browser/base.py
+++ b/layout/browser/base.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009 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
@@ -18,8 +18,6 @@
"""
Base classes for layout-based views.
-
-$Id$
"""
from zope.app.security.interfaces import IUnauthenticatedPrincipal
@@ -29,9 +27,11 @@ from zope.proxy import removeAllProxies
from zope.security.proxy import removeSecurityProxy
from zope.traversing.browser import absoluteURL
+from cybertools.meta.interfaces import IOptions
from cybertools.util import format
-from loops.common import adapted
+from loops.common import adapted, baseObject
from loops.i18n.browser import LanguageInfo
+from loops.browser.concept import ConceptView as BaseConceptView
from loops.browser.util import normalizeForUrl as normalize
from loops import util
@@ -74,6 +74,10 @@ class BaseView(object):
def virtualTargetView(self):
return self.viewAnnotations.get('targetView')
+ @Lazy
+ def baseConceptView(self):
+ return BaseConceptView(baseObject(self.context), self.request)
+
@Lazy
def node(self):
return self.viewAnnotations.get('node')
@@ -170,3 +174,7 @@ class BaseView(object):
def getMetaDescription(self):
return self.context.title
+ @Lazy
+ def globalOptions(self):
+ return IOptions(self.loopsRoot)
+
diff --git a/layout/browser/node.py b/layout/browser/node.py
index e2a7167..6e1bb44 100644
--- a/layout/browser/node.py
+++ b/layout/browser/node.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2008 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
@@ -18,8 +18,6 @@
"""
Layout node views.
-
-$Id$
"""
from zope.app.security.interfaces import IUnauthenticatedPrincipal
@@ -63,9 +61,12 @@ class LayoutNodeView(Page, BaseView):
@Lazy
def headTitle(self):
+ parts = [self.context.title]
if self.target is not None:
targetView = component.getMultiAdapter((self.target, self.request),
name='layout')
- return ' - '.join((self.context.title, targetView.title))
- else:
- return self.context.title
+ if targetView.title not in parts:
+ parts.append(targetView.title)
+ if self.globalOptions('reverseHeadTitle'):
+ parts.reverse()
+ return ' - '.join(parts)
diff --git a/media/browser/asset.pt b/media/browser/asset.pt
index 2eb0d8d..24f0524 100644
--- a/media/browser/asset.pt
+++ b/media/browser/asset.pt
@@ -11,7 +11,8 @@
tal:attributes="src
string:${url}/@@mediaasset.html?version=this&v=medium" />
-
Description
+
Description
diff --git a/media/browser/asset.py b/media/browser/asset.py
index 630a1c8..a18deda 100644
--- a/media/browser/asset.py
+++ b/media/browser/asset.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2008 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
@@ -20,17 +20,16 @@
Views for displaying media assets.
Authors: Johann Schimpf, Erich Seifert.
-
-$Id$
"""
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy
from zope.security.interfaces import Unauthorized
+from zope.traversing.api import getParent
from loops.browser.node import NodeView
from loops.browser.resource import ResourceView, resource_macros
-from loops.common import adapted
+from loops.common import adapted, normalizeName
from loops.util import _
from loops import util
@@ -62,7 +61,7 @@ class MediaAssetView(ResourceView):
if useAttachment:
filename = obj.localFilename or getName(self.context)
#filename = urllib.quote(filename)
- filename = NameChooser(getParent(self.context)).normalizeName(filename)
+ filename = normalizeName(filename)
response.setHeader('Content-Disposition',
'attachment; filename=%s' % filename)
return data
diff --git a/organize/browser/member.py b/organize/browser/member.py
index 5916929..738b521 100644
--- a/organize/browser/member.py
+++ b/organize/browser/member.py
@@ -112,7 +112,8 @@ class BaseMemberRegistration(NodeView):
@Lazy
def macro(self):
- return schema_macros.macros['form']
+ #return schema_macros.macros['form']
+ return organize_macros.macros['register']
def checkPermissions(self):
personType = adapted(self.conceptManager['person'])
diff --git a/organize/work/browser.py b/organize/work/browser.py
index 3a78a10..8975aba 100644
--- a/organize/work/browser.py
+++ b/organize/work/browser.py
@@ -253,7 +253,8 @@ class BaseWorkItemsView(object):
tsTo += 3600 * 24 - 1 # include full end date
if tsFrom or tsTo:
result['timeFromTo'] = (tsFrom, tsTo)
- state = form.get('wi_state') or self.options.wi_state
+ state = (form.get('wi_state') or
+ self.options.wi_state or self.typeOptions.wi_state)
if not state:
result['state'] = ['planned', 'accepted', 'running', 'done',
'done_x', 'finished', 'delegated', 'moved', 'cancelled']
diff --git a/system/site/view_macros.pt b/system/site/view_macros.pt
index e542cca..2a0bc47 100644
--- a/system/site/view_macros.pt
+++ b/system/site/view_macros.pt
@@ -11,7 +11,8 @@