#orbeon
Вопрос:
У меня есть следующий диалог, который я могу заполнить и использовать, если помещу его непосредственно в форму. Тем не менее, я хочу поместить это во все формы без необходимости вводить код в каждую форму. Я сохранил диалог в его отдельном email-dialog.xml файл, и я могу вызвать его, используя 2-й фрагмент, установленный внутри properties-local.xml. Диалоговое окно отображается в виде очень крошечного окошка, внутри которого нет ничего, кроме надписи «АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ» вверху, куда вы перетаскиваете поле. Я не могу понять, как заселить содержимое внутри. Я недавно обновил до последней версии 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>
Ответ №1:
Я предполагаю, что у вас в каждой форме есть поле с именем textBoxDialog
, которое вы хотите заполнить значением , которое пользователи вводят в текстовое поле, отображаемое в диалоговом окне, которое вы показываете, когда пользователи нажимают кнопку Отправить. Я бы посоветовал вам внести два изменения в код вашего диалога:
- В вашем
xf:input
, удалите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>
Комментарии:
1. Это полезно. Я все еще учусь ориентироваться в Орбоне. Одна вещь, на которой я застрял, — это как я могу получить ввод из textBoxDialog и поместить его в свойство, которое отправляет электронное письмо? В настоящее время у меня есть это свойство:
<property as="xs:string" name="oxf.fr.email.to.TEST.TESTING" value="need to link the email here from dialog" />
2. Это поле ввода, которое у вас есть в диалоговом окне, «привязано» к тому же элементу, что и соответствующее поле ввода, которое у вас есть в форме. Именно в диалоговом окне Параметры управления для этого текстового поля вы сообщаете Построителю форм, что значение этого поля ввода должно использоваться в качестве получателя ваших электронных писем, установив следующий флажок: i.stack.imgur.com/y1UrY.png . Вы дадите мне знать, если это сработает для вас!
3. О! Я подумал, что по какой-то причине мне нужно связать его в свойствах. Я удалил эту строку и добавил
class="fr-email-recipient
ее в поле textBoxDialog в диалоговом окне, и она работает! Спасибо вам за вашу помощь!4. Идеальное @Jolly9642, я рад, что это сделал свое дело; и вы должны использовать собственность в
properties-local.xml
случае, если вы хотели получателя(ов), адрес(а), чтобы быть всегда таким же (который может, например, быть в случае с формой, где сообщение отправляется на лицо, ответственное за обработку данных, что представляется).