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