Title
diff --git a/configure.zcml b/configure.zcml
index 6563dba..a12a0f2 100644
--- a/configure.zcml
+++ b/configure.zcml
@@ -319,6 +319,14 @@
set_schema="loops.interfaces.IFile" />
+
+
+
+
+
+
diff --git a/interfaces.py b/interfaces.py
index d78c07c..781b73d 100644
--- a/interfaces.py
+++ b/interfaces.py
@@ -532,7 +532,13 @@ class ITypeConcept(Interface):
source="loops.TypeInterfaceSource",
required=False)
- # viewName = schema.TextLine()
+ viewName = schema.TextLine(
+ title=_(u'View name'),
+ description=_(u'Name of a special view be used for presenting '
+ 'objects of this type.'),
+ default=u'',
+ required=False)
+
# storage = schema.Choice()
@@ -554,13 +560,24 @@ class IImage(IResourceAdapter):
"""
-class ITextDocument(IResourceAdapter):
+class ITextDocument(IResourceAdapter, IDocumentSchema):
""" A resource containing some sort of plain text that may be rendered and
edited without necessarily involving a special external application
(like e.g. OpenOffice); typical content types are text/html, text/xml,
text/restructured, etc.
"""
+class INote(ITextDocument):
+ """ Typically a short piece of text; in addition a note may contain
+ a URL linking it to more information.
+ """
+
+ linkUrl = schema.TextLine(
+ title=_(u'Link URL'),
+ description=_(u'An (optional) link associated with this note'),
+ default=u'',
+ required=False)
+
# view configurator stuff
diff --git a/organize/interfaces.py b/organize/interfaces.py
index ab2da6c..02e9994 100644
--- a/organize/interfaces.py
+++ b/organize/interfaces.py
@@ -32,8 +32,7 @@ from zope.security.proxy import removeSecurityProxy
from cybertools.organize.interfaces import IPerson as IBasePerson
from loops.organize.util import getPrincipalFolder, authPluginId
-
-_ = MessageFactory('zope')
+from loops.util import _
ANNOTATION_KEY = 'loops.organize.person'
@@ -49,7 +48,7 @@ def raiseValidationError(info):
class UserId(schema.TextLine):
-
+
def _validate(self, userId):
from loops.organize.party import getPersonForUser
if not userId:
diff --git a/resource.py b/resource.py
index b431079..82093d7 100644
--- a/resource.py
+++ b/resource.py
@@ -45,7 +45,7 @@ from cybertools.relation.interfaces import IRelatable
from cybertools.typology.interfaces import ITypeManager
from interfaces import IBaseResource, IResource
-from interfaces import IFile
+from interfaces import IFile, INote
from interfaces import IDocument, IDocumentSchema, IDocumentView
from interfaces import IMediaAsset, IMediaAssetView
from interfaces import IResourceManager, IResourceManagerContained
@@ -196,6 +196,16 @@ class FileAdapter(ResourceAdapterBase):
implements(IFile)
+class NoteAdapter(ResourceAdapterBase):
+ """ A type adapter for providing note functionality for resources.
+ """
+
+ implements(INote)
+ _schemas = list(INote) + list(IBaseResource)
+
+ #contentType = u'text/restructured'
+
+
class DocumentWriteFileAdapter(object):
implements(IWriteFile)
diff --git a/search/browser.py b/search/browser.py
index 2f01439..c6d7376 100644
--- a/search/browser.py
+++ b/search/browser.py
@@ -63,12 +63,6 @@ class Search(BaseView):
self.maxRowNum = n
return n
- def conceptTypesForSearch(self):
- general = [('loops:concept:*', 'Any Concept'),]
- return util.KeywordVocabulary(general + sorted([(t.tokenForSearch, t.title)
- for t in ITypeManager(self.context).types
- if 'concept' in t.qualifiers]))
-
def initDojo(self):
self.registerDojo()
cm = self.controller.macros
diff --git a/type.py b/type.py
index f2c4bfd..afa547e 100644
--- a/type.py
+++ b/type.py
@@ -33,7 +33,7 @@ from cybertools.typology.type import BaseType, TypeManager
from cybertools.typology.interfaces import ITypeManager
from loops.interfaces import ILoopsObject, IConcept, IResource
from loops.interfaces import ITypeConcept
-from loops.interfaces import IResourceAdapter, IFile, IImage, ITextDocument
+from loops.interfaces import IResourceAdapter, IFile, IImage, ITextDocument, INote
from loops.concept import Concept
from loops.resource import Resource, Document, MediaAsset
from loops.common import AdapterBase
@@ -43,7 +43,7 @@ class LoopsType(BaseType):
adapts(ILoopsObject)
- factoryMapping = dict(concept=Concept, resource=Resource)
+ factoryMapping = dict(concept=Concept, resource=Resource, document=Document)
containerMapping = dict(concept='concepts', resource='resources')
@Lazy
@@ -83,6 +83,11 @@ class LoopsType(BaseType):
@Lazy
def factory(self):
+ ti = self.typeInterface
+ #if ti is not None:
+ # fn = getattr(ti, 'factoryName', None)
+ # if fn:
+ # return self.factoryMapping.get(fn, Concept)
return self.factoryMapping.get(self.qualifiers[0], Concept)
@Lazy
@@ -241,7 +246,7 @@ class TypeInterfaceSourceList(object):
implements(schema.interfaces.IIterableSource)
- typeInterfaces = (ITypeConcept, IFile, ITextDocument)
+ typeInterfaces = (ITypeConcept, IFile, ITextDocument, INote)
def __init__(self, context):
self.context = context