basic types and a viewlet
This commit is contained in:
parent
85baaaf11e
commit
4db3e282ab
|
@ -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__)
|
|
@ -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."""
|
|
@ -0,0 +1,22 @@
|
||||||
|
<configure
|
||||||
|
xmlns="http://namespaces.zope.org/zope"
|
||||||
|
xmlns:five="http://namespaces.zope.org/five"
|
||||||
|
xmlns:grok="http://namespaces.zope.org/grok"
|
||||||
|
xmlns:i18n="http://namespaces.zope.org/i18n"
|
||||||
|
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
|
||||||
|
xmlns:browser="http://namespaces.zope.org/browser"
|
||||||
|
i18n_domain="pfwbged.folder">
|
||||||
|
|
||||||
|
<five:registerPackage package="." initialize=".initialize" />
|
||||||
|
|
||||||
|
<include package="five.grok" />
|
||||||
|
<grok:grok package="." />
|
||||||
|
|
||||||
|
<genericsetup:registerProfile
|
||||||
|
name="default"
|
||||||
|
title="PFWB Folder"
|
||||||
|
directory="profiles/default"
|
||||||
|
provides="Products.GenericSetup.interfaces.EXTENSION"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</configure>
|
|
@ -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)
|
|
@ -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
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<object name="portal_css">
|
||||||
|
|
||||||
|
<stylesheet title=""
|
||||||
|
id="++resource++pfwb.folder.css"
|
||||||
|
media="screen"
|
||||||
|
rel="stylesheet"
|
||||||
|
rendering="link"
|
||||||
|
cacheable="True"
|
||||||
|
compression="safe"
|
||||||
|
cookable="True"
|
||||||
|
enabled="1"/>
|
||||||
|
|
||||||
|
</object>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<object name="portal_javascripts">
|
||||||
|
|
||||||
|
<javascript id="++resource++pfwb.folder.js"
|
||||||
|
cacheable="True" compression="none" cookable="True" enabled="True"
|
||||||
|
expression="" inline="False" />
|
||||||
|
|
||||||
|
</object>
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
<metadata>
|
||||||
|
<version>0.1</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>profile-plone.formwidget.querystring:default</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</metadata>
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<object name="portal_types" meta_type="Plone Types Tool">
|
||||||
|
<property name="title">Controls the available content types in your portal</property>
|
||||||
|
<object name="pfwbgedfolder" meta_type="Dexterity FTI"/>
|
||||||
|
<object name="pfwbgedlink" meta_type="Dexterity FTI"/>
|
||||||
|
</object>
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<object name="pfwbgedfolder" meta_type="Dexterity FTI" i18n:domain="plone"
|
||||||
|
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
|
||||||
|
<property name="title" i18n:translate="">Saved Search</property>
|
||||||
|
<property name="description" i18n:translate="">PFWB Saved Search</property>
|
||||||
|
<property name="icon_expr">string:${portal_url}/++resource++pfwbgedfolder_icon.png</property>
|
||||||
|
<property name="factory">pfwbgedfolder</property>
|
||||||
|
<property name="add_view_expr">string:${folder_url}/++add++pfwbgedfolder</property>
|
||||||
|
<property name="link_target"></property>
|
||||||
|
<property name="immediate_view">view</property>
|
||||||
|
<property name="global_allow">True</property>
|
||||||
|
<property name="filter_content_types">True</property>
|
||||||
|
<property name="allowed_content_types">
|
||||||
|
<element value="dmskeyword"/>
|
||||||
|
</property>
|
||||||
|
<property name="allow_discussion">False</property>
|
||||||
|
<property name="default_view">view</property>
|
||||||
|
<property name="view_methods">
|
||||||
|
<element value="view"/>
|
||||||
|
</property>
|
||||||
|
<property name="default_view_fallback">False</property>
|
||||||
|
<property name="add_permission">cmf.AddPortalContent</property>
|
||||||
|
<property name="klass">pfwbged.folder.Folder</property>
|
||||||
|
<property name="behaviors">
|
||||||
|
<element value="plone.app.dexterity.behaviors.metadata.IBasic"/>
|
||||||
|
<element value="plone.app.content.interfaces.INameFromTitle"/>
|
||||||
|
</property>
|
||||||
|
<!-- DO NOT use a model_source or it removes manually added fields while reapplying the profile -->
|
||||||
|
<!--property name="model_source" /-->
|
||||||
|
<property name="schema">pfwbged.folder.IFolder</property>
|
||||||
|
<alias from="(Default)" to="(dynamic view)"/>
|
||||||
|
<alias from="edit" to="@@edit"/>
|
||||||
|
<alias from="sharing" to="@@sharing"/>
|
||||||
|
<alias from="view" to="(selected layout)"/>
|
||||||
|
<action title="View" action_id="view" category="object" condition_expr=""
|
||||||
|
description="" icon_expr="" link_target="" url_expr="string:${object_url}"
|
||||||
|
visible="True">
|
||||||
|
<permission value="View"/>
|
||||||
|
</action>
|
||||||
|
<action title="Edit" action_id="edit" category="object" condition_expr=""
|
||||||
|
description="" icon_expr="" link_target=""
|
||||||
|
url_expr="string:${object_url}/edit" visible="True">
|
||||||
|
<permission value="Modify portal content"/>
|
||||||
|
</action>
|
||||||
|
</object>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<object name="pfwbgedlink" meta_type="Dexterity FTI" i18n:domain="plone"
|
||||||
|
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
|
||||||
|
<property name="title" i18n:translate="">Link to Folder</property>
|
||||||
|
<property name="icon_expr">string:${portal_url}/++resource++pfwbgedlink_icon.png</property>
|
||||||
|
<property name="factory">pfwbgedlink</property>
|
||||||
|
<property name="add_view_expr">string:${folder_url}/++add++pfwbgedlink</property>
|
||||||
|
<property name="link_target"></property>
|
||||||
|
<property name="immediate_view">view</property>
|
||||||
|
<property name="global_allow">False</property>
|
||||||
|
<property name="filter_content_types">True</property>
|
||||||
|
<property name="allow_discussion">False</property>
|
||||||
|
<property name="default_view">view</property>
|
||||||
|
<property name="view_methods">
|
||||||
|
<element value="view"/>
|
||||||
|
</property>
|
||||||
|
<property name="default_view_fallback">False</property>
|
||||||
|
<property name="add_permission">cmf.AddPortalContent</property>
|
||||||
|
<property name="klass">pfwbged.folder.Link</property>
|
||||||
|
<property name="behaviors">
|
||||||
|
</property>
|
||||||
|
<!-- DO NOT use a model_source or it removes manually added fields while reapplying the profile -->
|
||||||
|
<!--property name="model_source" /-->
|
||||||
|
<property name="schema">pfwbged.folder.ILink</property>
|
||||||
|
<alias from="(Default)" to="(dynamic view)"/>
|
||||||
|
<alias from="edit" to="@@edit"/>
|
||||||
|
<alias from="sharing" to="@@sharing"/>
|
||||||
|
<alias from="view" to="(selected layout)"/>
|
||||||
|
<action title="View" action_id="view" category="object" condition_expr=""
|
||||||
|
description="" icon_expr="" link_target="" url_expr="string:${object_url}"
|
||||||
|
visible="True">
|
||||||
|
<permission value="View"/>
|
||||||
|
</action>
|
||||||
|
<action title="Edit" action_id="edit" category="object" condition_expr=""
|
||||||
|
description="" icon_expr="" link_target=""
|
||||||
|
url_expr="string:${object_url}/edit" visible="True">
|
||||||
|
<permission value="Modify portal content"/>
|
||||||
|
</action>
|
||||||
|
</object>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<fieldset>
|
||||||
|
<legend
|
||||||
|
i18n:translate=""
|
||||||
|
tal:content="viewlet/label">label</legend>
|
||||||
|
<ul>
|
||||||
|
<li tal:repeat="link viewlet/links"><a tal:attributes="href
|
||||||
|
link/folder/to_object/absolute_url"
|
||||||
|
tal:content="link/folder/to_object/Title">plop</a></li>
|
||||||
|
</ul>
|
||||||
|
</fieldset>
|
Reference in New Issue