2016-09-04 6 views
0

Я хочу настроить успех сообщение (successMessageTextBox) и downloadLink (linkTextbox) на уровне формы (метаданные) через formBuilder, так что администратор может изменить и опубликовать его в любое время. Также эти значения могут быть доступны для файла properties-local.xml для настройки success-message.Orbeon пользовательских метаданных на уровне формы

: например

navigate(uri="{xxf:instance('fr-parameters-instance')//linkTextbox}") 

success-message(message = "{xxf:instance('fr-parameters-instance')//successMessageTextBox}") 

Любое предложение будет оценено !!

UPDATE: -

1> MetaData

if (exists(xxf:instance('fr-form-metadata')/linkTextbox)‌​) 
      then navigate(uri="{xxf:instance('fr-form-metadata')/linkTextbox}") 
      else nop 

2> Formfeild

if (exists(xxf:instance('fr-form-instance')//linkTextbox)‌​) 
     then success-message(message = "{xxf:instance('fr-form-instance')//linkTextbox}") 
     else then success-message("save-success") 

код оснастки существует

<property as="xs:string" name="oxf.fr.detail.process.save-final.*.*"> 
      require-uploads 
      then validate-all 
      then save 
      if (exists(xxf:instance('fr-form-instance')//linkTextbox)‌​) 
      then navigate(uri="{xxf:instance('fr-form-instance')//linkTextbox}") 
      else nop 
      recover error-message("database-error") 
    </property> 

Код привязка наводкой

<property as="xs:string" name="oxf.fr.detail.process.save-final.*.*"> 
        require-uploads 
        then validate-all 
        then save 
        then 
        (
        if ("not(xxf:is-blank(xxf:instance('fr-form-instance')//msg))") 
        then success-message(message = "{xxf:instance('fr-form-instance')//msg}") 
        else nop 
        ) 
        recover error-message("database-error") 
      </property> 

Журнал ошибок: -

2016-09-26 23:06:44,925 INFO lifecycle - event: {"request": "21", "session": "AA57957F553E16581E264D06E3241BFD", "source": "fr", "message": "start: process", "uuid": "3bd78eb64e035d7d710a74049c972aca086b095a", "scope": "oxf.fr.detail.process", "name": "save-final-custom"} 
2016-09-26 23:06:45,302 ERROR XFormsServer - 
+----------------------------------------------------------------------------------------------------------------------+ 
|An Error has Occurred                         | 
|----------------------------------------------------------------------------------------------------------------------| 
|Invalid source:                          | 
|Invalid input 'f', expected OptWhiteSpace or ')' (line 9, pos 39):             | 
| if ('not(xxf:is-blank(xxf:instanc                     | 
|e('fr-form-instance')//msg))')                      | 
|         ^                    | 
|----------------------------------------------------------------------------------------------------------------------| 
|Application Call Stack                        | 
|----------------------------------------------------------------------------------------------------------------------| 
|----------------------------------------------------------------------------------------------------------------------| 
|Exception: org.parboiled.errors.ParsingException                  | 
|----------------------------------------------------------------------------------------------------------------------| 
|org.orbeon.oxf.fr.process.ProcessParser$   |parse       |ProcessParser.scala   | 121| 
|nterpreter$ProcessRuntime$$anonfun$parseProcess$1$1|apply       |ProcessInterpreter.scala  | 201| 
|nterpreter$ProcessRuntime$$anonfun$parseProcess$1$1|apply       |ProcessInterpreter.scala  | 201| 
|org.orbeon.oxf.util.ScalaUtils$BooleanWrapper$  |option$extension    |ScalaUtils.scala    | 115| 
|n.oxf.fr.process.ProcessInterpreter$ProcessRuntime$|parseProcess$1    |ProcessInterpreter.scala  | 201| 
|n.oxf.fr.process.ProcessInterpreter$ProcessRuntime$|runSubProcess     |ProcessInterpreter.scala  | 203| 
|nonfun$apply$11$$anonfun$apply$12$$anonfun$apply$13|apply       |ProcessInterpreter.scala  | 235| 
|nonfun$apply$11$$anonfun$apply$12$$anonfun$apply$13|apply       |ProcessInterpreter.scala  | 235| 
|scala.util.control.Breaks$$anon$1     |catchBreak     |Breaks.scala     | 63| 
|un$runProcess$3$$anonfun$apply$11$$anonfun$apply$12|apply       |ProcessInterpreter.scala  | 236| 
|un$runProcess$3$$anonfun$apply$11$$anonfun$apply$12|apply       |ProcessInterpreter.scala  | 233| 
|scala.util.Success         |flatMap      |Try.scala      | 231| 
|Interpreter$$anonfun$runProcess$3$$anonfun$apply$11|apply       |ProcessInterpreter.scala  | 233| 
|Interpreter$$anonfun$runProcess$3$$anonfun$apply$11|apply       |ProcessInterpreter.scala  | 241| 
|org.orbeon.oxf.util.DynamicVariable    |withValue      |DynamicVariable.scala   | 42| 
|n.oxf.fr.process.ProcessInterpreter$ProcessRuntime$|withEmptyStack    |ProcessInterpreter.scala  | 96| 
|fr.process.ProcessInterpreter$$anonfun$runProcess$3|apply       |ProcessInterpreter.scala  | 232| 
|fr.process.ProcessInterpreter$$anonfun$runProcess$3|apply       |ProcessInterpreter.scala  | 232| 
+----------------------------------------------------------------------------------------------------------------------+ 
2016-09-26 23:06:45,396 INFO lifecycle - event: {"request": "21", "session": "AA57957F553E16581E264D06E3241BFD", "source": "fr", "message": "end: process", "time": "471 ms"} 
2016-09-26 23:06:45,593 INFO lifecycle - event: {"request": "21", "session": "AA57957F553E16581E264D06E3241BFD", "source": "xforms", "message": "after cacheOrStore", "document cache current size": "1", "document cache max size": "50"} 
2016-09-26 23:06:45,594 INFO ProcessorService - /xforms-server - Timing: 1198 

ответ

1

Я предпочел бы добавить это к примеру fr-form-metadata, например, путем редактирования источника формы в Form Builder, и добавляя, скажем, <success-message> внутри <metadata>:

<xf:instance xxf:readonly="true" id="fr-form-metadata" xxf:exclude-result-prefixes="#all"> 
    <metadata> 
     ... 
     <success-message>Submitted, all good!</success-message> 
    </metadata> 
</xf:instance> 

Затем, в вашем процессе, вы можете показать, что сообщение с:

success-message(message = "{xxf:instance('fr-form-metadata')/success-message}") 
+0

Я попытался этот параметр, пользователь может видеть настроенное настраиваемое сообщение, но все еще сталкивается с той же проблемой. Если я изменил сообщение и опубликовал его снова, старый пользователь не может видеть обновленное сообщение. – HybrisFreelance

+0

Какую базу вы используете? Если реляционная база данных при публикации вы решили обновить существующую версию формы? Если вы создали новую версию, то действительно сообщение не изменится, поскольку версия определения формы, которая использовалась для создания формы, также используется при ее редактировании, что является точкой управления версиями. – avernet

+0

Я пытался в демоверсии использовать файл warball (CE). – HybrisFreelance