标签: dexterity

Plone 4.1中的敏捷和原型是什么?

最近的一个问题中,toutpt说:

敏捷需要Plone4.1才能与原型内容配合使用并拥有所有plone功能(历史,差异,锁定......)

我正在考虑在新网站中使用Dexterity,以及标准的Archetypes对象,如Pages,Files等.但是,我无法找到列出可能引发的问题的页面.

我知道Dexterity/Archetypes在网站上一起玩得很好,例如两种内容类型之间的引用.我想知道这是否还是一个问题(看起来好像已经修好了),以及在与Dexterity潜水之前我应该​​注意的其他问题.

最初我的想法是使用Dexterity 1.0和Plone 4.1附带的Archetypes版本,但我愿意接受建议(例如,版本1.0-next for Dexterity).

plone archetypes dexterity

9
推荐指数
3
解决办法
765
查看次数

Plone工作流程的圣杯

我们正在实施Plone CMS作为ISO9001文档的存储库.

ISO需要一定量的日志记录,因为任何熟悉该标准的人都可能知道:-)

为了灵活性,我们希望不按特定顺序加入:

  • 新的内容类型:合并企业中可能出现的不同文档所必需的
  • 版本控制:显示我们的文档始终是最新的,并显示与同一文档的先前版本相比所做的更改
  • 工作副本支持:以便"已发布"文档在编辑时保持在线状态
  • 更复杂的工作流程:考虑ISO承担的审核流程
  • 不同文档的不同工作流程:工作流程取决于文档的类型.

因此,工作流优化的圣杯应该是(如果我错了,请纠正我):

  • 内容类型的敏捷性
  • CMFEdition(嵌入在Plone中)用于版本控制
  • 迭代工作副本支持
  • plone.app.workflowmanager用于新的工作流程
  • Products.CMFPlacefulWorkflow根据不同的文档为不同的工作流程

问题是不同产品的整合:

  • 你如何使用Dexterity进行版本控制?
  • 如何在其上添加工作副本(保持必要的版本控制)?
  • 你如何获得闪亮的新工作流程(工作流管理员的优秀用户界面)与版本控制和工作副本兼容.

我搜索了google-realm并且已经找到了这些链接:

我们还检查了:

  • Archetypes contenttypes版本控制:http://plone.org/documentation/manual/developer-manual/archetypes/appendix-practicals/enabling-versioning-on-your-custom-content-types

这些都是安装和配置的......

但是,我的新内容类型不允许结帐/签入(迭代产品),并且历史视图中也没有跟踪此相同内容类型的版本/更改.

他们是一个神奇的序列,或者我错过了什么(或者很多 - 更有可能)?因为如果所有这些产品都是"开箱即用"的,我认为这是所有工作流程的一个解决方案......

另外2012/04/17:正如他们所说,堆栈已经完成

workflow plone dexterity

8
推荐指数
1
解决办法
759
查看次数

列出灵巧对象的字段

我想列出一个dexterity对象的所有字段(和值).

我可以轻松访问这样的单个字段值 myobject.myfield

但我不知道如何列出对象的所有可用字段.

plone dexterity

8
推荐指数
3
解决办法
1910
查看次数

plone.indexer和Dexterity的问题

我希望为我的基于Dexterity的自定义内容类型的属性('sector')启用一个名为Sectors的特殊索引.

在我的架构中,在types/mycontent.py中我有:

class IMyContent(form.Schema):
    """
    My Content
    """
    sectors = schema.Set(
            title=_(u"Sectors"),
            description=_(u"Select some sectors"),
            value_type=schema.Choice(vocabulary=vocs.sectors),
            required=True,
        )

    (...)
Run Code Online (Sandbox Code Playgroud)

然后我在indexers.py中以这种方式定义索引

from plone.indexer.decorator import indexer
from zr.content.types.mycontent import IMyContent

@indexer(IMyContent)
def Sectors(obj):
    """Indexer for Sectors attribute.
    """
    d = getattr(obj, "sectors", u"")
    return d if d else None
Run Code Online (Sandbox Code Playgroud)

最后在root包configure.zcml中:

<adapter name="Sectors" factory=".indexers.Sectors"/>
Run Code Online (Sandbox Code Playgroud)

但是,它似乎不起作用.即使重新安装产品后,我也看不到portal_catalog和catalog脑对象中的索引似乎也没有.

我究竟做错了什么?

indexing plone dexterity

7
推荐指数
1
解决办法
838
查看次数

有没有办法扩展Plone Dexterity的INameFromTitle行为?

我正在开发的项目使用了Plone令人敬畏的Dexterity插件.我的一些自定义内容类型具有必须计算的非常具体的名称.我之前完成此操作的方法是将plone.app.content.interfaces.INameFromTitle添加为对象的通用设置条目中的行为,按照手册的说明:

<?xml version="1.0"?>
<object name="avrc.aeh.cycle" meta_type="Dexterity FTI">
  ...
  <property name="schema">myproject.mytype.IMyType</property> 
  <property name="klass">plone.dexterity.content.Item</property>
  ...
  <property name="behaviors">
    <element value="plone.app.content.interfaces.INameFromTitle" />
  </property>
  ...
</object>
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个提供INameFromTitle的适配器:

from five import grok
from zope.interface import Interface
import zope.schema
from plone.app.content.interfaces import INameFromTitle

class IMyType(Interface):

    foo = zope.schema.TextLine(
        title=u'Foo'
        )

class NameForMyType(grok.Adapter):
    grok.context(IMyType)
    grok.provides(INameFromTitle)

    @property
    def title(self):
        return u'Custom Title %s' % self.context.foo
Run Code Online (Sandbox Code Playgroud)

此方法与此博客文章中建议的方法非常相似:

http://davidjb.com/blog/2010/04/plone-and-dexterity-working-with-computed-fields

不幸的是,这个方法在plone.app.dexterity beta之后停止工作,现在我的内容项没有正确分配它们的名字.

有人会碰巧知道如何为非常具体的命名用例扩展Dexterity的INameFromTitle行为吗?

非常感谢您的帮助,谢谢!

behavior plone adapter dexterity

7
推荐指数
1
解决办法
1532
查看次数

将collective.z3cform.datagridfield与Dexterity一起使用

我有点像Plone的新手,我试图将DataGridField与Dexterity一起使用.目标是使用Plone 4.1在我们的Intranet上发布可用性研究的结果.我已经创建了一个自定义文档类型(称为交互),我想在其中一个字段中使用datagrid来建模一个包含两列显示结果摘要的表.

根据collective.z3cform.datagridfield中列出的说明,我已成功将collective.z3cform.datagrid egg添加到我的buildout中的egg列表中,我可以看到新的Add-on在我的附加组件列表中显示为Active对于我的网站.我已经创建了一个简单的模式Python模块,它描述了一个文档,显示了我正在记录的可用性研究的结果:

from five import grok
from zope import schema
from zope import interface

from plone.directives import form

from plonetheme.mytheme import InteractionMessageFactory as _

from plone.app.textfield import RichText

from z3c.form import field, button
from Products.CMFCore.interfaces import IFolderish

from collective.z3cform.datagridfield import DataGridFieldFactory, DictRow

class IFinding(interface.Interface):
    summary = schema.TextLine(title=_(u"Summary"))
    percentage = schema.TextLine(title=_(u"Percentage"))

class IInteraction(form.Schema):

    findings = schema.List(
        title=_(u"Overview of findings"),
        required=False,
        value_type=DictRow(
            title=_(u"Finding"),
            schema=IFinding
            )
        )

class EditForm(form.EditForm):
    grok.context(IInteraction)
    grok.require('zope2.View')
    fields = field.Fields(IInteraction)

    fields['findings'].widgetFactory = DataGridFieldFactory
Run Code Online (Sandbox Code Playgroud)

我通过在profiles/default/types.xml中添加一行来注册我的新交互内容类型:

<?xml …
Run Code Online (Sandbox Code Playgroud)

python plone dexterity z3c.form

7
推荐指数
1
解决办法
1466
查看次数

Plone中的自定义敏捷编辑表单模板?

我正在开发一个Plone插件,需要为Dexterity内容重新设置皮肤替代编辑表单.我需要能够在AJAX覆盖中仅显示编辑表单的一部分(使用JQuery UI,而不是JQuery工具,因此在服务器端执行似乎比在JavaScript中过滤更合理)**.

来自Dexterity Developer's Guide的文档似乎表明我可以使用宏来创建自定义模板.但是,本节中缺少一些东西 - 对于不使用grok来绑定视图的人来说可能是一些关键的上下文,但也许还有其他东西.创建一个仅模板的视图失败(显然无法从视图类中找到名称),并且尝试将ZCML中的自定义模板绑定到stock视图类或它的子类都失败(忽略模板以支持股票模板).

我的目标:

  1. 对它的编辑包含在一个裸模板中,该模板基本上只包含#content div中的内容.
  2. 我不仅仅想要一个未包装的z3c.form渲染,我需要一个最小的模板来包装它 - 只是不是股票Plone viewlet管理器和furntiture.

什么行不通:

from plone.dexterity.browser.edit import DefaultEditForm
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile

class MyEditForm(DefaultEditForm):
    index = ViewPageTemplateFile('my_edit_template.pt')
Run Code Online (Sandbox Code Playgroud)

ZCML等价物(使用运行时魔术定义索引)在这里也不起作用.

如何将自定义模板注入编辑表单?

**我正在研究Solgema.fullcalendar与plone.app.event基于Dexterity的类型的兼容性.Solgema.fullcalendar使用jQuery UI弹出窗口,而不是plone.app.jquerytools叠加助手; 为了保持一致性,有了这个最小视图并且不试图模仿普通Plone叠加的JavaScript中的过滤机制是有意义的.

zope plone dexterity

7
推荐指数
1
解决办法
914
查看次数

无法激活关于Plone Dexterity类型的讨论(文件夹)

我一直致力于基于灵巧的plone应用程序.我创建了几种新类型.这就是我激活对名为"activity_report"的特定敏捷内容类型的评论所做的工作:

在Plone控制面板中

讨论部分,我启用了以下内容:

  • 全局启用评论
  • 启用匿名评论

类型部分中,我从下拉列表中选择了"活动报告"类型,并启用了"允许评论"选项.

在文件系统上

在FTI文件activityreport.xml中:

<property name="allow_discussion">True</property>
Run Code Online (Sandbox Code Playgroud)

我重新启动了实例,甚至重新安装了产品,但我无法激活dexterity类型的评论部分.

值得一提的是,标准类型(例如Page)可以激活讨论模块.

有什么我想念的吗?

plone dexterity

6
推荐指数
1
解决办法
553
查看次数

如何在创建内容类型后执行操作?

我正在尝试在创建Dexterity内容类型后执行一些任意代码.例如,内容类型可以代表马.

import logging
logger = logging.getLogger("Plone")

class IHorse(form.Schema):

    def __init__(self, context):
        logger.info('Creating horse')
        super(self).init(self, context)
Run Code Online (Sandbox Code Playgroud)

我想在前台运行应用程序时在控制台中打印记录器消息"Creating horse".但马是创造的,我没有得到它的消息.我猜内容类型对象是由它创建的__init__,但也许我错了.

plone dexterity

6
推荐指数
1
解决办法
194
查看次数

如何更改字段集顺序?

我有一个表单模式,它继承自另一个表单模式.两者都有字段集.但是,字段集按其创建顺序放置.因此,最后一个模式中描述的字段集将是最后一个.我希望它成为第一个.有没有办法做到这一点 ?

例:

from plone.supermodel import model
from zope import schema

class FormSchema(model.Schema):
     model.fieldset(
          'test',
          label='Test',
          fields=['field1']
     )
     field1 = schema.Text(title=u'test')


class FormSchema2(FormSchema):
     # Is last but I would like to place it first
     model.fieldset(
          'test2',
          label='Test2',
          fields=['field2']
     )
     field2 = schema.Text(title=u'test2')
Run Code Online (Sandbox Code Playgroud)

plone dexterity z3c.form

6
推荐指数
1
解决办法
468
查看次数

标签 统计

dexterity ×10

plone ×10

z3c.form ×2

adapter ×1

archetypes ×1

behavior ×1

indexing ×1

python ×1

workflow ×1

zope ×1