Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
devel:documentation:application_configuration:dev:dynamic-forms [2019/02/01 11:27]
tomiskar
devel:documentation:application_configuration:dev:dynamic-forms [2019/02/14 13:32]
tomiskar [Future development]
Line 40: Line 40:
   * ''BYTEARRAY'' - byte[]   * ''BYTEARRAY'' - byte[]
   * ''UUID'' - uuid identifier. Indexed.   * ''UUID'' - uuid identifier. Indexed.
-  * ''ATTACHMENT'' - attachment (~binary file). Read more about [[..:..:modules_rpt:dev:attachment_manager|attachments]].+  * ''ATTACHMENT'' - attachment (~binary file). Read more about [[#attachments|attachments]]. 
 + 
 + 
 +<note info>Changing ''persistentType'' and ''confidential'' is possible only for attributes without persisted values => when attribute is not used for some values. Data migration, when attribute's ''persistentType'' or ''confidential'' is changed is not supported now.</note>
  
 with properties: with properties:
Line 113: Line 116:
  
 ===== Validation ===== ===== Validation =====
 +{{tag>validation}}
  
-For form attribute values is possible to configure prepared validations. Validation are evaluated, when form with extended attributes is saved and sent to backend. Simple validations as ''required'', ''min'', ''max'' are evaluated on frontend after value is changed.+For form attribute values is possible to configure prepared validations. Validation are evaluated (**on the backend**), when form with extended attributes is saved and sent to backend. Simple validations as ''required'', ''min'', ''max'' are evaluated on frontend after value is changed.
  
 === Required === === Required ===
Line 134: Line 138:
 ==== Regex ==== ==== Regex ====
  
-Value has to match given regular expression.+Value has to match given regular expression ([[https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html|java pattern]] is used).
  
 <note info>Unique validation is not supported for ''BYTEARRAY'' and ''ATTACHMENT'' persistent types.</note> <note info>Unique validation is not supported for ''BYTEARRAY'' and ''ATTACHMENT'' persistent types.</note>
Line 140: Line 144:
 <note info> <note info>
 Use single back slash for configure regex on GUI => use double back slash in java.  Use single back slash for configure regex on GUI => use double back slash in java. 
-Example regex for the ip address:+Example regex for the ip v4 address:
   * GUI: ''^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$''   * GUI: ''^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$''
   * java: ''^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$''   * java: ''^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$''
 </note> </note>
 +
 +{{ :devel:documentation:application_configuration:dev:validation.png |}}
  
 ==== Validation message ==== ==== Validation message ====
Line 149: Line 155:
 Custom validation message. If message is not defined, then default message by invalid validation type will be shown. Custom validation message. If message is not defined, then default message by invalid validation type will be shown.
  
-<note tip>Can contain localization key (e.g. ''core:validationError.invalid.unique'').</note>+<note tip>Can contain localization key (e.g. ''core:validationError.invalid.unique''). Parameters ''min'', ''max'', ''regex'', ''unique'', ''required'' is available for localization message.</note>
  
  
Line 169: Line 175:
  
 <note tip>Only identity extended attribute values support authorization policies. Support for other entities can be added in future.</note> <note tip>Only identity extended attribute values support authorization policies. Support for other entities can be added in future.</note>
 +
 +===== Attachments =====
 +
 +Attachments can be uploaded for the attributes with persistent type ''ATTACHMENT''. Attachment is uploaded immediately after user selects file from his file system - attachment is uploaded as [[..:..:modules_rpt:dev:attachment_manager#temporary_files_and_attachments|temporary]] to server and it's identifier is used as extended attribute value. Extended attribute can be saved then (when whole extended form is submitted).
 +
 +Attachment can be downloaded from frontend. If attachment is picture (~ attachment mime type starts with ''image/*''), then preview of saved extended attribute's attachment is available directly in extended attribute form.
 +Download and preview is supported for agendas (entity types): identity, role, tree node, contract and contract slice => role requests (role lifecycle) and identity roles (parameters for the assigned roles) are  
 +
 +{{:devel:documentation:application_configuration:dev:attachment-preview.png|}}
 +
 +Read more about [[..:..:modules_rpt:dev:attachment_manager|attachments]] usage in the application (e.g. how to increase maximum file size).
 +
 +
 +
 ===== Future development ===== ===== Future development =====
  
-  * API for saving the owner and the eav form in one transaction (=> save ''IdmFormInstance''). 
-  * Attribute properties validation - by supported persistent type (see above). 
   * Form value data migration, when persistent type is changed.   * Form value data migration, when persistent type is changed.
-  * [[https://redmine.czechidm.com/issues/1140|#1140]] Add module into form definition table - now is module resolved dynamically by ownerbut this cannot be overriden by module - e.g. when reg module adds new form for identity, localization is searched by owner in core module => and cannot be found.+  * Attachment renderersupport multiple files, validation support (now is validation on input) 
 +  * Created deep copy, when form values are copied => attachment is linked to two form values and is removed, when the first one is deleted.
  • by tomiskar