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 @@
+
+
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 @@
+