如何获得一个对话框以填充 orbeon 中的所有表单
How to get a dialog to populate on all forms in orbeon
我有以下对话框,如果我将它直接放入表单中,我可以填充和使用它。但是,我想将它放在所有表单上,而不必将代码放入每个表单中。我已将该对话框保存到它自己的单独电子邮件-dialog.xml 文件中,我可以使用在属性-local.xml 中设置的第二个片段调用它。该对话框显示为一个非常小的框,里面除了您拖动框顶部的标签“EMAIL ADDRESS”外什么都没有。我不知道如何让里面的东西填充。我最近更新到最新版本的 Orbeon 2020.1.2.2021。任何帮助或指导将不胜感激。
<xxf:dialog
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xh="http://www.w3.org/1999/xhtml"
xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
id="my-dialog-id"
appearance="full"
level="modal"
close="true"
draggable="true"
visible="false">
<xf:label>EMAIL ADDRESS</xf:label>
<xf:input id="textBoxDialog-control" bind="textBoxDialog-bind">
<xf:label ref="$form-resources/textBoxDialog/label"/>
<xf:hint ref="$form-resources/textBoxDialog/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:input>
<xf:trigger id="btnDialogBox-control" bind="btnDialogBox-bind">
<xf:label ref="$form-resources/btnDialogBox/label"/>
<xf:hint ref="$form-resources/btnDialogBox/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
<!-- send email function-->
<xf:action event="DOMActivate" type="xpath">
fr:run-process('oxf.fr.detail.process', 'email')
</xf:action>
</xf:trigger>
</xxf:dialog>
<property
as="xs:string"
name="oxf.fr.detail.dialogs.custom.*.*"
value="oxf:/forms/resources/email-dialog.xml"/>
<property as="xs:string" name="oxf.fr.detail.process.send.*.*">
xf:show(dialog="my-dialog-id")
</property>
我假设您在每个表单中都有一个名为 textBoxDialog
的字段,您希望用用户在用户单击时显示的对话框内显示的文本字段中输入的值填充该字段在 发送 按钮上。我建议您对对话框的代码进行两处更改:
- 在您的
xf:input
中,删除 id
,否则您可能会收到重复 ID 错误,因为您在每个表单中都有一个 ID 为 textBoxDialog-control
的控件。
- 对于对话框内的按钮,不要在表单内引用控件的标签
btnDialogBox
,而是将标签放在对话框的代码中。
进行这些更改后,对话框如下所示:
这是您的代码的修改版本:
<xxf:dialog
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xh="http://www.w3.org/1999/xhtml"
xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
id="my-dialog-id"
appearance="full"
level="modal"
close="true"
draggable="true"
visible="false">
<xf:label>EMAIL ADDRESS</xf:label>
<xf:input bind="textBoxDialog-bind">
<xf:label ref="$form-resources/textBoxDialog/label"/>
<xf:hint ref="$form-resources/textBoxDialog/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:input>
<xf:trigger>
<xf:label>Send</xf:label>
<!-- send email function-->
<xf:action event="DOMActivate" type="xpath">
fr:run-process('oxf.fr.detail.process', 'email')
</xf:action>
</xf:trigger>
</xxf:dialog>
我有以下对话框,如果我将它直接放入表单中,我可以填充和使用它。但是,我想将它放在所有表单上,而不必将代码放入每个表单中。我已将该对话框保存到它自己的单独电子邮件-dialog.xml 文件中,我可以使用在属性-local.xml 中设置的第二个片段调用它。该对话框显示为一个非常小的框,里面除了您拖动框顶部的标签“EMAIL ADDRESS”外什么都没有。我不知道如何让里面的东西填充。我最近更新到最新版本的 Orbeon 2020.1.2.2021。任何帮助或指导将不胜感激。
<xxf:dialog
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xh="http://www.w3.org/1999/xhtml"
xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
id="my-dialog-id"
appearance="full"
level="modal"
close="true"
draggable="true"
visible="false">
<xf:label>EMAIL ADDRESS</xf:label>
<xf:input id="textBoxDialog-control" bind="textBoxDialog-bind">
<xf:label ref="$form-resources/textBoxDialog/label"/>
<xf:hint ref="$form-resources/textBoxDialog/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:input>
<xf:trigger id="btnDialogBox-control" bind="btnDialogBox-bind">
<xf:label ref="$form-resources/btnDialogBox/label"/>
<xf:hint ref="$form-resources/btnDialogBox/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
<!-- send email function-->
<xf:action event="DOMActivate" type="xpath">
fr:run-process('oxf.fr.detail.process', 'email')
</xf:action>
</xf:trigger>
</xxf:dialog>
<property
as="xs:string"
name="oxf.fr.detail.dialogs.custom.*.*"
value="oxf:/forms/resources/email-dialog.xml"/>
<property as="xs:string" name="oxf.fr.detail.process.send.*.*">
xf:show(dialog="my-dialog-id")
</property>
我假设您在每个表单中都有一个名为 textBoxDialog
的字段,您希望用用户在用户单击时显示的对话框内显示的文本字段中输入的值填充该字段在 发送 按钮上。我建议您对对话框的代码进行两处更改:
- 在您的
xf:input
中,删除id
,否则您可能会收到重复 ID 错误,因为您在每个表单中都有一个 ID 为textBoxDialog-control
的控件。 - 对于对话框内的按钮,不要在表单内引用控件的标签
btnDialogBox
,而是将标签放在对话框的代码中。
进行这些更改后,对话框如下所示:
这是您的代码的修改版本:
<xxf:dialog
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xh="http://www.w3.org/1999/xhtml"
xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
id="my-dialog-id"
appearance="full"
level="modal"
close="true"
draggable="true"
visible="false">
<xf:label>EMAIL ADDRESS</xf:label>
<xf:input bind="textBoxDialog-bind">
<xf:label ref="$form-resources/textBoxDialog/label"/>
<xf:hint ref="$form-resources/textBoxDialog/hint"/>
<xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:input>
<xf:trigger>
<xf:label>Send</xf:label>
<!-- send email function-->
<xf:action event="DOMActivate" type="xpath">
fr:run-process('oxf.fr.detail.process', 'email')
</xf:action>
</xf:trigger>
</xxf:dialog>