一个z3c.form小部件,用于控制编辑页面上的词汇或其他字段的显示
项目描述
MasterSelectWidget
这是一个基于原始 Archetypes 小部件的 z3cform 小部件,用于控制编辑页面上的词汇或其他字段的显示。需要提供有关要控制的字段及其控制方式的信息。
请随意编辑此文档,以帮助更好地解释事物!
示例
更多复杂示例,请参阅包目录中的 demo.py。
from zope import schema from plone.supermodel import model from plone.formwidget.masterselect import _ from plone.formwidget.masterselect import MasterSelectBoolField from plone.formwidget.masterselect import MasterSelectField class IMasterSelectDemo(model.Schema): """ MasterSelect Demo to demonstrate all options available to use and to allow the test modules a content type to work with. """ masterField = MasterSelectField( title=_(u"MasterField"), description=_(u"This field controls the vocabulary of slaveField1," "the available values in slaveField1 will be equal " "to the numbers between the selected number and 10. " values=(1, 2, 3, 4, 5, 6), slave_fields=( # Controls the vocab of slaveField1 {'name': 'slaveField1', 'action': 'vocabulary', 'vocab_method': getSlaveVocab, 'control_param': 'master', }, # Controls the visibility of slaveField1 also {'name': 'slaveField1', 'action': 'hide', 'hide_values': ('6',), 'siblings': True, }, ), required=True, ) slaveField1 = schema.Set( title=_(u"SlaveField1"), description=_(u"This field's vocabulary is controlled by the value " "selected in masterField. The values available here " "will be the numbers between the number selected in " "masterField and 10. The field will be hidden when 6 " "is selected in the masterField."), value_type=schema.Choice(values=(1, 2, 3, 4, 5, 6)), required=False, )
参数
所有魔法都发生在 slave_fields 参数中,该参数应是一个映射序列。每个映射描述了由主字段控制的一个字段
name
当选择改变时,要控制的字段名称。受控字段/小部件可以是任何类型,除非使用 'vocabulary' 或 'value' 操作。当操作是 'vocabulary' 时,字段必须使用 MultiSelectionWidget、SelectionWidget 或 MasterSelectWidget 之一,任何这些都必须设置 'format' 参数为 'select'(这是 MasterSelectWidget 的默认值)。对于 'value',小部件必须足够简单,可以使用 element.value 或 elem.selectedIndex(StringWidget、SelectionWidget、AutoCompleteWidget 等)更改当前值。
masterID
这是可选的,如果省略则将自动计算。它可以用来指定在 HTML 文档中渲染的确切主字段。通常您只需要为复选框主字段设置此值,因为它们的 ID 会添加一个 -0,如下所示:#form-widgets-checkboxfield-0。请注意,这是一个 jQuery ID 选择器。
masterSelector
这是可选的,如果未定义则默认为 master ID。它具有与 masterID 相同的用法,但允许指定任何 jQuery 选择器(不仅是一个 ID)。
您将使用此选项与单选按钮主字段,例如选择所有输入
‘masterSelector’: ‘input[name=”form.widgets.my_master_field”]’,
slaveID
这是可选的,如果省略则将自动计算。它可以用来指定在 HTML 表单中要控制的确切从字段名称。请注意,这是一个 jQuery ID 选择器,因此请使用类似这样的选择器:#form-widgets-field
action
对从字段执行的操作类型。这可以是
- vocabulary
使用 XMLHttpRequest 调用更改从字段的词汇。要使用 vocabulary 操作,从字段必须满足上述小部件要求。
- enable 或 disable
切换以将目标小部件标记为启用或禁用;要使用 enable / disable 操作,字段必须使用可以启用/禁用的 HTML 小部件。
- show 或 hide
切换以将目标小部件标记为显示或隐藏。
- value
更改另一个简单小部件(StringWidget)的值,在选择改变时使用 XMLHttpRequest 调用。
- attr
更改由 slaveID 指定的 DOM 元素的值
- jquery
尚未实现 将发送回 DOM 以执行的一个完整的 jQuery 语句。
vocab_method
要调用来检索从字段的动态词汇或 'value' 时从字段值的函数名称。对于 'vocabulary',此函数必须返回一个 DisplayList。对于 'value',它必须返回一个字符串或 msg_id。该函数必须接受一个参数,该参数将用于传递在主小部件中选择的新的值。此参数的名称默认为 'master_value',但可以使用任何名称,只要使用 control_param 元素指定即可。仅在 'action':'vocabulary' 或 'action':'value' 时使用。
control_param
如上所述,这是在调用 vocab_method 时使用的参数名称。仅在 'action':'vocabulary'、'action':'value'、'action':'attr' 和 'action':'jquery' 时使用。
hide_values
一组值,在主部件中选择时,将导致从属字段/部件隐藏、显示或禁用。所使用的方法由“action”元素确定。仅与“action”:‘hide’、‘action’:‘enable’、‘action’:‘disable’或‘action’:‘show’一起使用。值‘()’(不要使用引号)将触发任何内容。
兄弟节点
布尔值,表示是否选择从属字段的兄弟节点以及从属字段本身。此字段仅可用于“action”:‘hide’或“action”:‘show’,并可用于隐藏标签和从属字段。
empty_length
在从属字段中选择条目时,从选择框开始删除条目的位置,当选择框使用新数据刷新时。在选择框选项删除之前执行Ajax调用,因此不能在此调用完成之前使用。这可以防止出现小的选择框,其第一个选项为“————-”。此字段是可选的,并且仅可用于“action”:‘vocabulary’。在初始化Ajax请求之前也会检查此值。如果主选择框长度等于或小于此数字,则Ajax请求将不会执行,以帮助防止从属部件执行顺序混乱。默认值为0。
prevent_ajax_values
一组值,在主部件中选择时将阻止部件初始化Ajax请求。使用(‘’)作为值来阻止如果选择框值是‘’的Ajax调用。默认为()。
initial_trigger
布尔值,表示主部件是否应在加载时初始触发。默认为true,除了vocabulary以外的所有内容,在这种情况下为false,以防止执行通常不需要的初始Ajax调用。
单个MasterSelectWidget可以控制任意数量的从属字段,新字段通过向从属字段列表/元组中添加新映射来控制。一个作为MasterSelectWidget动作目标的字段本身可以使用MasterSelectWidget来控制其他字段。
MasterSelectDemo类型包括不同配置的主从部件。默认情况下是禁用的,但您可以通过portal_setup工具导入它,并通过在portal_types工具中的MasterSelectDemo条目中检查“隐式可添加”复选框来测试它。
祝您玩得开心!
与ContactChoice的特殊情况
从collective.contact.widget 1.8开始,您可以使用ContactChoice字段作为主字段,但它需要为masterID和masterType属性进行特殊配置。以下是一个示例
organization = ContactChoice( title=_(u"Organization"), required=True, source=ContactSourceBinder(obj_types=('organization',)), slave_fields=( {'name': 'department', 'masterID': 'form-widgets-organization-input-fields', 'masterType': 'ContactChoice', 'slaveID': '#form-widgets-department', 'action': 'vocabulary', 'vocab_method': get_organization_directions_vocabulary, 'control_param': 'selected_organism', 'initial_trigger': True }, ) )
贡献者
Dorneles Tremea: deo@plonesolutions.com
Cédric Messiant, Ecreall: cedricmessiant@ecreall.com
Vincent Fretin, Ecreall: vincentfretin@ecreall.com
Daniel Widerin, daniel@widerin.net
Wesley Barroso Lopes, wesleybl@gmail.com
变更日志
3.0.0 (2024-06-05)
修复非根虚拟主机环境中的JSON调用URL。修复#37 [erral]
停止支持Python 3.7。[wesleybl]
2.0.1 (2021-09-16)
2.0.0 (2021-05-27)
添加对Python 3(Plone 5.2.2)的支持。停止支持Python 2.7和3.6。[wkbkhard, laulaz]
修复加载编译的js资源。[alessandro.ceglie]
修复翻译过程中的错误。[pbauer]
修复buildout / Travis。[tisto, wkbkhard]
1.7 (2019-11-13)
移除已废弃的simplejson依赖。[keul]
从通用设置依赖中移除plone.app.jquerytools。[keul]
修复JavaScript:页面刷新时从从属字段中未重新选择旧值。[keul]
1.6 (2016-10-11)
添加可选支持collective.contact.widget >= 1.8中的ContactChoice作为主字段。[vincentfretin]
在updateSelect中触发liszt:updated事件,以强制更新来自collective.z3cform.chosen的选中的从属字段。[vincentfretin]
修复视觉问题:在一个覆盖层中,对每个复选框或单选选项只切换一次。[thomasdesvenain]
修复包元数据和trove分类器。[hvelarde]
1.5.2 (2016-08-08)
使用zope2.View代替cmf.AddPortalContent作为masterselect-jsonvalue视图。在编辑表单中,用户不一定有添加门户内容的权限。[vincentfretin]
1.5.1 (2016-01-08)
修复更新field.vocabulary时的副作用。现在在更改词汇表之前复制字段。[vincentfretin]
1.5 (2015-11-24)
当整个词汇表被替换时,翻译“vocabulary”从属字段的术语(如“无值”)。[sgeulette]
1.4.1 (2014-10-30)
jQuery 1.9兼容。[vincentfretin]
1.4 (2014-10-09)
masterselect.js现在可缓存。[vincentfretin]
迁移到plone.app.testing。将selenium测试从windmill迁移到robotframework。[saily]
添加travis和coveralls集成。[saily]
更新文档。修复CHANGES.rst中的rst错误。向README.rst添加一个示例。[saily]
添加包含egg的buildout。[saily]
1.3 (2014-06-16)
在初始触发时不要使用快速过渡。[thomasdesvenain]
主选择功能在表单在覆盖层中加载时正常工作。[thomasdesvenain]
修复当masterselect在一个不可见的fieldset中时出现的错误。[cedricmessiant]
添加主选择单选小部件和指定主选择器而不是masterID的能力。[ebrehault]
1.2 (2013-11-04)
在显示/隐藏函数上添加了一个(“快速”)jQuery过渡。[thomasdesvenain]
1.1 (2013-08-26)
与z3c.form 3.0和jQuery 1.6+兼容。注意:此版本不再与jQuery 1.4兼容。请使用plone.formwidget.masterselect 1.0用于版本 < 4.3的plone。[vincentfretin]
1.0 (2013-06-10)
在生成的脚本中将jq替换为jQuery。[vincentfretin]
移除plone.directives.form依赖。移除plone.app.jquerytools依赖。修复演示配置文件。进行了一些清理。[cedricmessiant]
初次提交,准备测试。[JMehring]
项目详情
哈希值 对于 plone.formwidget.masterselect-3.0.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1bfb5190b71437eb1a70f71d48980cfc816d1d26ccd653155c51e24563dd9d3 |
|
MD5 | 39808b77252c197609dc4d542fe5ffa3 |
|
BLAKE2b-256 | af65c5b0b4ae2764855c9d9cb7cf25501d66634d2adc5bbb55d5fc946b4f25e1 |