Thursday, January 17, 2019

Synchronized master-detail views

We regularly observe usage patterns reported by Orbeon Forms users. One pattern that comes frequently is support for what is traditionally called a master-detail view.

For example, you first enter a list of initial information (the master), as shown in the following screenshot.

"Master" view
Later in the form, for example in a subsequent wizard page, you complete the information (the detail) for each item of the list.
"Detail" view
Doing this until Orbeon Forms 2018.2 required writing very complex custom XForms code in the form, which usually required talking to the Orbeon support team. This is explained by the number of cases to handle: adding, removing, moving, iterations in the master grid, and also synchronizing values from the master grid to the detail view. Further, such custom code is hard to maintain and could break with new Orbeon Forms releases.

So with Orbeon Forms 2018.2, we are introducing a new synchronization component which does all of this declaratively and reliably. The component is maintained by Orbeon in new Orbeon Forms releases so you have peace of mind when upgrading.

We plan to add a user interface for this feature soon. In the meanwhile, it is easy to set this up by opening the Edit Source dialog and configuring the synchronization.

For more, see the documentation. We hope you will like this new Orbeon Forms 2018.2 feature!

Monday, December 31, 2018

Orbeon Forms 2018.2

Today we released Orbeon Forms 2018.2, the second and last major release of Orbeon Forms in 2018! This release is packed with new features and enhancements which should help form authors and form users be more productive.

Major features and enhancement

Simple data migration

Orbeon Forms 2018.2 introduces a new way to manage change, called simple data migration. This is an option which sits between "overwrite an existing form definition in an incompatible way" and "create a whole new form definition version". When enabled in the form settings, simple data migration allows you to overwrite an existing form definition, but keep certain changes compatible, such as adding and removing controls, grids or sections. (doc , blog post)

Simple Data Migration setting

Hidden fields

A hidden field works like most other form controls, however, it doesn't show in the form at runtime. At design-time, the control shows as a box with an icon so that the form author knows that a hidden control is in use. This is useful to hold intermediary calculations and to handle out-of-band validations. (doc)

Hidden field in Form Builder


Improved Excel Import page

The Excel import page is now organized as a wizard and supports selecting a specific form definition version as the import destination. (doc)

Excel import wizard with version selection

Improved Date control

This version includes a new and improved Date control with a new date picker. A new validation allows dynamically specifying dates to exclude. (doc)

Date picker with some excluded dates
In addition, the Date, Time, and Time/Time controls look more modern and have an option to take their "natural" (usually more narrow) width or to fill a grid cell entirely to facilitate alignment.

Optionally aligned date and time controls


Form-level control settings

Form controls can now have settings which are global for a given form. For example, say you need all Currency fields on your page to have a "USD" prefix instead of a "$" prefix, or that most number fields on your form need to show and round 3 digits after the decimal: you can now configure this in the Form Builder UI very easily.

Setting the default prefix of the Currency control for the form
You can also override those settings for individual form controls. This is in addition to global configurations you can do in the Orbeon Forms configuration properties file.

This is part of the Orbeon Forms component system and completely customizable for your own custom form controls as well. (doc)

Repeated content synchronization

Often, forms require some kind of master-detail interface, where you first enter a list of initial information and then complete the information for each item of the list in more details on a separate screen. Orbeon Forms 2018.2 includes a component which does this synchronization automatically for you. (doc)

The "Detail" view of a master-detail

Summary page versioning support

When more than one form version is available, the user has the choice of the version to access. (doc)


Showing version 2 of the ACME Order form

Reordering of actions and services

You can now reorder actions and services in the toolbox via drag and drop. (doc)

Reorderable actions

Other features and enhancements

Including the features and enhancements above, we closed over 90 issues since Orbeon Forms 2018.1.

    Form Builder

    • You can set frozen repeated rows from the Section/Grid Settings. (doc)
    • Created and updated Orbeon Forms versions are stored into the form definitions. (doc)

    Form Runner

    • User menu for login and logout. (doc)
    • New Dutch and improved German localizations.

      Internationalization

      See Localizing Orbeon Forms for the latest localization support. Localization depends on volunteers, so please let us know if you want to help!

      Browser support

      • Form Builder (creating forms)
        • Chrome 71 (latest stable version)
        • Firefox 64 (latest stable version) and the current Firefox ESR
        • Microsoft Edge 17 and 18
        • Safari 12 (latest stable version)
      • Form Runner (accessing form)
        • All browsers supported by Form Builder (see above)
        • IE11, Edge 15 and Edge 16
        • Safari Mobile on iOS 11
        • Chrome for Android (stable channel)

      Compatibility notes

      Internet Explorer support

      Support for IE10 is removed.

      Grid and section components

      The legacy minOccurs and maxOccurs attributes are no longer supported. Use min or max instead. For max, the unbounded value is no longer supported. Omit the max attribute or use none instead.

      Download and feedback

      You can download the latest version of Orbeon Forms from the downloads page.

      Don't forget to grab a trial license for the PE version.

      Please send feedback:
      We hope you enjoy this release!

      Tuesday, November 13, 2018

      Orbeon Forms 2018.1.3 PE

      Today we released Orbeon Forms 2018.1.3 PE. This update to Orbeon Forms 2018.1 PE contains bug-fixes and is recommended for all Orbeon Forms 2018.1 PE users.

      This release addresses the following issues since Orbeon Forms 2018.1.2 PE:

      Form Runner:
      • Properly handle showing dialog and setting focus on page load (#3792)
      • Malformed PDF output if cells all have colspan (#3799)
      • PDF template: number field not filled (#3800)
      • CP-1252 filtering should also happen in `HTMLFragmentSerializer` (#3817)
      • None.get when duplicating from the Summary page (#3819)
      • Date picker doesn't use right language when embedded (#3787)
      Form Builder:
      • No undo for cutting grid (#3786)
      • Initial value in repeated grid resets when control is moved (#3781)
      • Copy/paste grid containing fr:explanation doesn't update the control name (#3808)
      • Copy/paste of grid duplicates itemsets (#3810)
      You can download the latest version of Orbeon Forms from the downloads page.

      Don’t forget to grab a trial license for the PE version.

      Please send feedback:
      We hope you enjoy this release!

      Friday, November 9, 2018

      Multiple PDF templates

      Form Runner can produce PDF files in two ways:

      1. Automatically. The PDF is produced based on the appearance of the form in your web browser. This is similar to printing a read-only version of your form. See also Automatic PDF.

      2. From PDF templates. You upload one or more PDF files using the “Attach PDF Templates” dialog. At runtime, Form Runner fills-out Acrobat fields in the template. See also PDF Templates.

      Since Orbeon Forms 2018.1, you can attach more than one PDF template to a form definition. Templates are differentiated by a name and/or a language, which you specify when attaching the PDF.

      Attach PDF Templates Dialog
      Attach PDF Templates Dialog

      When producing the PDF at runtime, as part of a “Send” or “Submit” process, [1] you can specify a name to pick from the available PDF templates. Then the form’s current language is used to pick from the remaining PDF templates, if they specify a language.

      This enables two types of scenarios. The first one is that you can have localized PDF templates. Say your form supports English and Spanish, then you can have a PDF template in English and a PDF template in Spanish, and the appropriate PDF will be used depending on the language of the user.

      The second scenario consists in producing different PDFs depending on which button the user is activating, or depending on specific data in the form. For example, you could produce both a short summary PDF, and a full PDF with all the information captured with the user.

      Along with this change to PDF templates you can also decide, in a process, to use the automatic PDF instead of a PDF template, even if one or more templates are present. This provides you with more flexibility for PDF production.

      For more about PDF templates, see the documentation. We hope you will enjoy this feature of Orbeon Forms 2018.1!


      1. Processes in Orbeon Forms are configurable and can be associated with buttons that appear at the bottom of the form. For details, see Buttons and processes.  ↩

      Monday, November 5, 2018

      Email templates

      Orbeon Forms can send emails, typically as part of a “Send” or “Submit” process. [1] Such emails can contain text and attachments, including a PDF version of the form filled by the user.

      So far, while Orbeon Forms offered quite a bit of flexibility as to the recipients of the emails, [2] the subject and body of the email were not as configurable as often desired.

      The good news is that with Orbeon Forms 2018.1, the email subject and email body can now be dynamic. This means that they can be expressed in the form of templates, where elements in the templates can contain values from form controls or be calculated with a formulas. The template syntax is simple and used in other place in Form Builder as well.

      In addition, instead of configuring the subject and email in configuration properties, you can now enter the email subject and body directly within Form Builder, in the “Email Settings” dialog. Each language can have separate subjects and bodies, and HTML emails are supported.

      Dynamic email body
      Dynamic email body
      Dynamic email subject
      Dynamic email subject

      For more about email templates, see the documentation. We hope you will enjoy this feature of Orbeon Forms 2018.1!


      1. Processes in Orbeon Forms are configurable and can be associated with buttons that appear at the bottom of the form. For details, see Buttons and processes.  ↩

      2. Recipients can be statically defined or come from fields or selection controls in the form. For details, see Control settings.  ↩

      Thursday, October 25, 2018

      Automatic calculation dependencies

      If you have ever worked with a spreadsheet such as Microsoft Excel or Google Sheets, you know that values that depend on each other update automatically when you make changes.

      This is also a feature often requested in forms, where you might have calculations such as totals that depend on values entered in other places in the form. Here is an example:

      Form with totals
      Form with totals

      Orbeon Forms has had support for such automated dependencies for a long time,[1] but this wasn’t enabled this by default. Well, better late than never: Orbeon Forms 2018.1 enables such dependencies by default for new forms, and you can use a form setting to change this for your existing forms.

      How does this work? In concept, it is simple: at form compilation time, Orbeon Forms goes through all the calculated and initial values formulas you have in your form, and makes what is called a topological sort of the formulas. This determines an evaluation or re-evaluation order for all calculated values. When a value changes in the form, Orbeon Forms knows which formulas to recalculate first so that things show as expected. [2]

      The beauty of this is that this works no matter where in the forms the dependent values are: they can be before, after, or between values they depend on. Reordering form fields has no effect on the result of the calculations.

      For more details, see the documentation.

      We hope you will find this feature of Orbeon Forms 2018.1 useful!


      1. Since Orbeon Forms 4.10.  ↩

      2. The underlying form processor used by Orbeon Forms is based on the XForms standard, which calls for computing such dependencies. The difference here is that Orbeon Forms uses variable references in formulas to compute this dependency order, instead of just references to nodes in an XML data model. But the concept is identical.  ↩

      Friday, October 19, 2018

      Resizing cells with drag & drop in Form Builder

      In Orbeon Forms 2017.2, in Form Builder, we started using a web technology called CSS grid layout. This gave us a modern and solid foundation to implement new grid-related features in Form Builder. We already leveraged that new foundation in Orbeon Forms 2017.2 to switch to a 12-column layout.

      We took this one step further in Orbeon Forms 2018.1 allowing form authors to change the size of the cells with drag & drop. This is simply done by grabbing the border of a cell, and dropping it in one of the possible destinations, which while dragging are indicated by an orange bar. For instance, here we make the size of the Middle name slightly smaller, to leave more space for the Last name:


      And this works in both directions: you can resize cells to make them wider or narrower, as shown above, but also to make them taller or shorter. For more on this, see the documentation on the 12-column layout.