问题标签 [dexterity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
plone - 在以编程方式创建的敏捷项目上设置字段默认值
我有一个 Dexterity 内容类型,基于plone.directives.form.Schema
它有许多用于分配默认值的表单提示:
一些默认值更复杂,传回本身就是 Dexterity 类型实例的对象。这些对象对于主要类型的设置至关重要,主要类型由各种事件触发。
我现在正在测试中。理想情况下,我希望能够使用类似的东西:
也就是说,我希望项目能够获取默认值,而不必手动传递给构造函数。
如果我正在使用,zope.schema
我可以使用 FieldProperty 来设置模式字段的代理。是否有与 Dexterity 等效的东西,或者可能是通过创建表单来推送对象的功能?
解决方案:我最终选择了 David 的选项 #1,拦截ObjectCreatedEvent
.
感觉就像我在复制表单行为的一部分,但至少它使用的是提供表单默认值的相同功能。
plone - 使用 Dexterity 模式或 XML 的传统界面?
Plone Dexterity 支持通过接口(使用 zope.schema 进行定义)或通过 XML 文件定义内容类型模式。首选/推荐的方式是什么?
此外:是否有用于定义模式 (models/mytype.xml) 的 XML 方言的文档?
此演示文稿看起来很接近但不完整。
testing - 单独测试 Dexterity 内容创建
对于一个项目,我有一个复杂的主对象,其中包含许多子组件。这些对象的设置由构造函数接口控制,我将其绑定到各种生命周期和工作流事件,如下所示:
我想做的是在不依赖事件处理程序的情况下测试构造函数方法。我尝试通过直接创建对象来避免生命周期事件来做到这一点:
该方法根据主对象上提供的属性在实例setup
内创建许多项目。Custom_Folder
但是,这是挂起的,我认为这是由于两个对象实际上都不属于该站点,因此没有获取权限。我可以通过将createContent
主对象更改为createContentInContainer
并将其添加到测试站点的适当部分来实现这一点,但这会触发所有生命周期事件,这些事件最终会执行构造函数调用,这不会让我在其中测试它们隔离。
我已经尝试为此使用模拟对象,但是处理在 Constructor 期间发生的内容创建变得混乱.setup
。
解决这个问题的最佳方法是什么?
plone - 在 Dexterity 中使用 z3c.relationfield 反向引用
使用 z3c.relationfield.schema.RelationList 或 RelationChoice 可以维护与其他 Dexterity 内容对象的关系。在 Archetypes 中,我们有一个功能上下文。getBRefs() 以检索引用当前“上下文”对象的对象列表。z3c.relationfield 或 Dexterity 中是否有类似的东西?在 Dexterity 中获取“反向引用”的规范方法是什么?
python - 为 plone 4 实现一个简单的敏捷内容类型
我有一个非常令人沮丧的开始学习 Plone 开发。我想为 Plone 4 开发一个基于灵巧的内容类型。我是一位经验丰富的 python 开发人员,对 Zope 和 Grok 有一定的了解,对于构建来说相当陌生。也就是说,我读了 Martin Aspeli 的“Professional Plone 4 Development”,但书中的相当多的版本信息似乎已经过时了。
使用 buildout,我能够启动并运行一个 Plone 实例。ZopeSkel 已安装,但当我尝试创建新包时,出现如下错误:
如果我尝试从给定目录中运行 paste,它会告诉我,命令“add”是未知的。我尝试了不同版本的 ZopeSkel,并尝试了原始 plone 模板和 zopeskel.dexterity。输出根据版本和模板略有变化,但结果保持不变。
Obvisouly Plone 开发似乎对版本更改非常敏感,这使得旧文档非常无用。http://plone.org/products/dexterity/documentation/manual/developer-manual告诉我,它上次更新是在 1114 年前。
有人可以给我一个起点,为 Plone 4 开发一个非常简单的灵巧内容类型,它真的有效吗?
plone - 基于敏捷度检索内容对象的 IntID 的规范方法
五.intid 文档说明了以下用于检索对象的 IntID 的模式:
这是否也是 Plone 中的规范方式,或者是否有一些帮助/实用程序方法可以包装上面的代码?
validation - 灵巧:在程序化创建之前验证数据
以编程方式创建 Dexterity 类型时,是否可以验证传递给工厂的数据,就好像它来自表单一样?
我有一个带有许多约束、不变量和验证器的 Dexterity 内容类型:
为了确保 MyType 的所有实例都具有正确的默认值,我为它创建了一个自定义类,其属性使用 FieldProperty 映射,并在类型的 FTI 声明中分配它:
但是,使用 时plone.dexterity.utils.createContentInContainer
,可能会实例化不符合所施加的约束等的对象。理想情况下,我希望能够在创建之前自己执行此验证。
我在这里缺少一种简单的方法吗?我已经简要查看了collective.transmogrifier,但我没有看到输入验证的提及。
谢谢。
plone - 在 Plone 中自定义敏捷编辑表单模板?
我正在开发一个 Plone 插件,该插件需要为 Dexterity 内容重新换肤的备用编辑表单。我需要能够在 AJAX 覆盖中仅显示编辑表单的一部分(使用 JQuery UI,而不是 JQuery 工具,因此在服务器端执行此操作似乎比在 JavaScript 中过滤更合理)**。
Dexterity Developer's Guide中的文档似乎表明我可以使用宏自定义模板。不过,本节缺少一些东西——对于那些不使用 grok 绑定视图的人来说,可能是一些关键的上下文,但也许是别的东西。创建仅模板视图失败(显然无法从视图类中找到名称),并且尝试将 ZCML 中的自定义模板绑定到股票视图类或它的子类都失败(模板被忽略以支持库存模板)。
我的目标:
- 对此进行编辑,该编辑包含在一个裸模板中,该模板基本上只包含 #content div 中的内容。
- 我不只想要一个未包装的 z3c.form 渲染,我还需要一个最小的模板来包装它——只是不需要库存的 Plone viewlet 管理器和家具。
什么不起作用:
ZCML 等效项(使用运行时魔法定义索引)在这里也不起作用。
如何将自定义模板注入编辑表单?
** 我正在研究 Solgema.fullcalendar 与 plone.app.event 的基于敏捷类型的兼容性。Solgema.fullcalendar 将 jQuery UI 用于弹出窗口,而不是 plone.app.jquerytools 覆盖帮助器;为了保持一致性,拥有这个最小视图而不是试图模仿普通 Plone 覆盖的 JavaScript 中的过滤器机制是有意义的。
plone - 列出敏捷对象的字段
我想列出一个灵巧对象的所有字段(和值)。
我可以像这样轻松访问单个字段值myobject.myfield
但我不知道如何列出对象的所有可用字段。
plone - plone:启用/禁用标记行为后如何重新注册视图
我创建了一个在启用行为时应该可用的视图。
我还将行为添加到 configure.zcml
在阅读http://plone.org/products/dexterity/documentation/manual/behaviors/referencemanual-all-pages上的主要标记行为部分后,我认为这已经足够了。但显然不是。当我启用 MyBehavior TTW 然后尝试打开我的视图时,视图不可用。
我意识到,如果我在启用/禁用行为后重新启动我的 plone 实例,它会按预期工作。我猜在启用行为 TTW 后,必须重新注册视图。
现在的问题是我该怎么做?