diff --git a/src/pfwbged/__init__.py b/src/pfwbged/__init__.py new file mode 100644 index 0000000..f48ad10 --- /dev/null +++ b/src/pfwbged/__init__.py @@ -0,0 +1,6 @@ +# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages +try: + __import__('pkg_resources').declare_namespace(__name__) +except ImportError: + from pkgutil import extend_path + __path__ = extend_path(__path__, __name__) diff --git a/src/pfwbged/folder/__init__.py b/src/pfwbged/folder/__init__.py new file mode 100644 index 0000000..7d04377 --- /dev/null +++ b/src/pfwbged/folder/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +"""Init and utils.""" + +from zope.i18nmessageid import MessageFactory +_ = MessageFactory("pfwbged.folder") + +from folder import IFolder, Folder +from link import ILink, Link + + +def initialize(context): + """Initializer called when used as a Zope 2 product.""" diff --git a/src/pfwbged/folder/configure.zcml b/src/pfwbged/folder/configure.zcml new file mode 100644 index 0000000..abb8c9f --- /dev/null +++ b/src/pfwbged/folder/configure.zcml @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/src/pfwbged/folder/folder.py b/src/pfwbged/folder/folder.py new file mode 100644 index 0000000..4f6341f --- /dev/null +++ b/src/pfwbged/folder/folder.py @@ -0,0 +1,18 @@ +from zope.interface import implements +from five import grok +from zope import schema +from plone.directives import form + +from plone.dexterity.content import Container + +from plone.supermodel import model + +from . import _ + +class IFolder(model.Schema): + """ """ + + +class Folder(Container): + """ """ + implements(IFolder) diff --git a/src/pfwbged/folder/link.py b/src/pfwbged/folder/link.py new file mode 100644 index 0000000..f7fe09b --- /dev/null +++ b/src/pfwbged/folder/link.py @@ -0,0 +1,47 @@ +from zope.interface import implements +from five import grok +from zope import schema +from plone.directives import form + +from plone.dexterity.content import Item + +from plone.supermodel import model + +from plone.formwidget.contenttree import ObjPathSourceBinder + +from z3c.relationfield.schema import RelationChoice + +from . import _ + +class ILink(model.Schema): + """ """ + folder = RelationChoice(title=_(u'Folder'), required=True, + source=ObjPathSourceBinder()) + + +class Link(Item): + """ """ + implements(ILink) + + +from collective.dms.basecontent.dmsdocument import IDmsDocument +grok.templatedir('templates') +grok.context(IDmsDocument) + +from collective.dms.basecontent.browser.viewlets import BaseViewlet, DmsBelowContentViewletManager + + +class LinkViewlet(grok.Viewlet): + grok.template('linksviewlet') + grok.viewletmanager(DmsBelowContentViewletManager) + grok.order(15) + portal_type = 'pfwbgedlink' + label = _(u"Filed in Folders") + + def links(self): + links = [] + for child in self.context.values(): + if child.portal_type != 'pfwbgedlink': + continue + links.append(child) + return links diff --git a/src/pfwbged/folder/profiles/default/cssregistry.xml b/src/pfwbged/folder/profiles/default/cssregistry.xml new file mode 100644 index 0000000..f9bf84d --- /dev/null +++ b/src/pfwbged/folder/profiles/default/cssregistry.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/pfwbged/folder/profiles/default/jsregistry.xml b/src/pfwbged/folder/profiles/default/jsregistry.xml new file mode 100644 index 0000000..10fb240 --- /dev/null +++ b/src/pfwbged/folder/profiles/default/jsregistry.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/src/pfwbged/folder/profiles/default/metadata.xml b/src/pfwbged/folder/profiles/default/metadata.xml new file mode 100644 index 0000000..eee2d21 --- /dev/null +++ b/src/pfwbged/folder/profiles/default/metadata.xml @@ -0,0 +1,7 @@ + + 0.1 + + profile-plone.formwidget.querystring:default + + + diff --git a/src/pfwbged/folder/profiles/default/types.xml b/src/pfwbged/folder/profiles/default/types.xml new file mode 100644 index 0000000..41fa1bc --- /dev/null +++ b/src/pfwbged/folder/profiles/default/types.xml @@ -0,0 +1,6 @@ + + + Controls the available content types in your portal + + + diff --git a/src/pfwbged/folder/profiles/default/types/pfwbgedcollection.xml b/src/pfwbged/folder/profiles/default/types/pfwbgedcollection.xml new file mode 100644 index 0000000..f380351 --- /dev/null +++ b/src/pfwbged/folder/profiles/default/types/pfwbgedcollection.xml @@ -0,0 +1,45 @@ + + + Saved Search + PFWB Saved Search + string:${portal_url}/++resource++pfwbgedfolder_icon.png + pfwbgedfolder + string:${folder_url}/++add++pfwbgedfolder + + view + True + True + + + + False + view + + + + False + cmf.AddPortalContent + pfwbged.folder.Folder + + + + + + + pfwbged.folder.IFolder + + + + + + + + + + + diff --git a/src/pfwbged/folder/profiles/default/types/pfwbgedlink.xml b/src/pfwbged/folder/profiles/default/types/pfwbgedlink.xml new file mode 100644 index 0000000..cfbb58a --- /dev/null +++ b/src/pfwbged/folder/profiles/default/types/pfwbgedlink.xml @@ -0,0 +1,39 @@ + + + Link to Folder + string:${portal_url}/++resource++pfwbgedlink_icon.png + pfwbgedlink + string:${folder_url}/++add++pfwbgedlink + + view + False + True + False + view + + + + False + cmf.AddPortalContent + pfwbged.folder.Link + + + + + pfwbged.folder.ILink + + + + + + + + + + + diff --git a/src/pfwbged/folder/templates/linksviewlet.pt b/src/pfwbged/folder/templates/linksviewlet.pt new file mode 100644 index 0000000..1c07e80 --- /dev/null +++ b/src/pfwbged/folder/templates/linksviewlet.pt @@ -0,0 +1,10 @@ +
+ label + +