Giter VIP home page Giter VIP logo

orbeon / orbeon-forms Goto Github PK

View Code? Open in Web Editor NEW
512.0 42.0 220.0 684.03 MB

Orbeon Forms is an open source web forms solution. It includes an XForms engine, the Form Builder web-based form editor, and the Form Runner runtime.

Home Page: http://www.orbeon.com/

License: GNU Lesser General Public License v2.1

Scala 50.38% HTML 10.75% Java 12.06% XSLT 3.87% XProc 2.16% CSS 3.21% JavaScript 14.34% PLSQL 0.35% Makefile 0.03% Shell 0.01% Less 2.81% SQLPL 0.01% Python 0.02%

orbeon-forms's Introduction

Orbeon Forms

Web Forms for the Enterprise and the Government

Last updated for Orbeon Forms 2023.1.1 (March 2024)

Build Status

What is Orbeon Forms?

Orbeon Forms is a Web forms solution which includes:

  • Form Builder: a browser-based visual form authoring tool
  • Form Runner: a runtime environment which facilitates the deployment and integration of large and complex forms

For more information about Orbeon Forms, please visit orbeon.com.

What's new

Downloading and installing

Orbeon Forms comes in two editions:

  • Community Edition (CE)
  • Professional Edition (PE)

For more information and downloadable binaries, see the download page.

The system requirements and installation procedure are detailed on Installing Orbeon Forms.

Community and support

See the community page. In a nutshell:

Documentation

All documentation is available online:

What's happening?

Compiling Orbeon Forms

You usually don't have to compile Orbeon Forms yourself. But if you want to, see Building Orbeon Forms.

The source code of Orbeon Forms CE is available on github.

Orbeon Forms is written mainly using the following languages and technologies:

  • Scala
  • Java
  • JavaScript
  • XForms, XSLT, and other XML technologies

Known bugs and requests for enhancements (RFEs)

For a list of known issues and RFEs, check the issue tracking system.

Third-party software

This product includes:

Please consult the third-party-licenses directory for more information about individual licenses.

Credits

We would like to thank YourKit, LLC for kindly supporting open source projects like Orbeon Forms with the full-featured YourKit Java Profiler.


Copyright 1999-2024 (C) Orbeon, Inc. All rights reserved.

orbeon-forms's People

Contributors

acspike avatar ajw625 avatar andreaskc avatar avasyukov avatar avernet avatar brunobuzzi avatar clunger avatar dbarciela avatar ebruchez avatar evlist avatar falbatrabajo avatar fatpanther avatar jackspcta avatar kundel avatar mir619 avatar nvdbleek avatar obruchez avatar orbeon avatar samuliheljo avatar scala-steward avatar siebertm avatar stufflebeam avatar tiz170 avatar wshuman3 avatar yankee42 avatar zdenekhrib avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orbeon-forms's Issues

Autocomplete: select button doesn't work

In XForms Controls form:

  • click the button โ†’ the menu shows but disappears right away

In Controls form:

  • the first time only the menu shows and you can select a value
  • clear the field
  • subsequent times the menu shows but selection doesn't have an effect

Support user-based access control

Requirements:

  • form data must at least support owner/author/visibility metadata
  • all accesses must be controlled based on those criteria
  • summary page must be able to filter search based on those criteria

A simple Unix-like authentication scheme like that of eXist might be desirable.

Adding a control implemented in XBL that uses JavaScript to an empty form leads to a JavaScript error

This is happening as the JavaScript hasn't been loaded in the page when it was first served to the browser. It looks like we either need:

  1. To include the JavaScript/CSS for all the possible XBL components in the page when it is first sent to the browser.
    1. When creating a new form, we only know the list of components after users enter the app/form names. So we would need to go through all the oxf.fb.toolbox.group.*.*.*.* properties, collect all the distinct XBL files.
    2. Go through each XBL file to collect the distinct XBL components.
    3. Include a non-relevant instance of each XBL component, so the XForms engine includes the appropriate JavaScript/CSS in the page.
  2. To implement a mechanism for the server to send new JavaScript/CSS to the client.
    1. The server needs to know if a given piece of JavaScript/CSS has been sent already, so not to send it again if this isn't needed.
    2. The Ajax response needs be able to contain either inline JavaScript (e.g. for the JavaScript included in the page for <xxforms:script>) and links to JavaScript files. Ditto for CSS.
    3. The client-side code needs to be able to load JavaScript and CSS, both inline and by URL. We already have code doing something similar in DeferredPortletLoader.coffee.
    4. The client-side code might need to initialize the code being loaded, depending on whether listeners to YUI's onDOMReady and jQuery's ready() are called right away when the JavaScript is loaded.

Improve xxbl:global scoping

Right now, xxbl:global scopes everything in the top-level scope. This is problematic:

  • it breaks encapsulation (global elements are just copied to the top-level)
  • it can lead to id conflicts
  • accessing the top-level scope is not always possible

The idea is to scope globals in a new scope per XBL binding id (not per concrete binding as the scope is shared amongst concrete bindings).

fr:number: exception when entering a value

"The regular expression in replace() must not be one that matches a zero-length string"

With FB create a form with Number control and observe error when testing the form.

Make sure to run in dev mode.

Resources aggregator baseline improvement

The resource aggregator has limitations:

  1. you can't add your own resources to the baseline
  2. you can't add tree/menu/etc. to the baseline

Point 1 could be improved by adding a configuration property to not only specify components part of the baseline, but also resources by path.

Point 2 can be improved by XBL-izing those components.

Server must track focus and dispatch focus event across containers

So far, the server doesn't handle focus besides:

  • changing repeat iterations when events occur on controls within repeat iterations
  • propagating DOMFocusIn/Out sent by the client
  • telling the client to focus when xf:setfocus is called

In addition, focus events are broken in XBL, in the sense that they are incorrectly retargeted outside the the shadow trees.

What we need:

  • server to fully track focus
  • dispatch focus in/out events not only to focusable leaf controls but also to container controls
  • in particular, dispatch focus in/out events to XBL controls when needed
  • update focus when focused control becomes non-relevant, readonly or non-visible (case, dialog)
  • update focus when iterations disappear
  • update focus upon repeat iterations changes including via setfocus, insert/delete

Ability to access resources or annotations in an XML Schema

This was suggested by a customer. Say you import or embed a schema. That schema might contain:

  • enumerated values
  • annotations

Currently, if you need such information, you must also include the schema into an instance. The idea of this RFE is to provide easier / more efficient access to this via XForms. Ideas include:

  • providing access to the schema as a document (then using e.g. a custom function to extract information from it)
  • an extension function such as xxf:schema-annotation($instance-element, $lang?)

Browser back causes server exception

Repro: go to a form, navigate forward then back, notice error:

java.lang.AssertionError
at org.orbeon.oxf.xforms.control.controls.XFormsOutputControl.evaluateExternalValue(XFormsOutputControl.java:123)
at org.orbeon.oxf.xforms.control.XFormsValueControl.getExternalValue(XFormsValueControl.java:197)
at org.orbeon.oxf.xforms.control.XFormsValueControl.getBackCopy(XFormsValueControl.java:232)

`xf:setvalue` evaluates `ref` before `if`

Evaluating the ref of a setvalue with if="false()" but not if there is an enclosing action with a if="false()" is inconsistent. (One could argue that it is always analyzed and leads to an error if an undeclared variable is used, but this isn't what is happening.)

Test case

Elements for non-relevant section templates missing

For consistency with what happens for regular sections, having the elements for non-relevant section templates present in the instance is desirable. On way to deal with this would be to have, as part of the Form Builder meta-data for XBL components, a template for the XML to add inside the element in the instance. With this:

  • When creating the XBL component from the library form, we should populate that XML template.
  • Form Builder, when adding the component, should add the elements in the template inside the element from the instance bound to the control.

Also see Why are the elements for a non-relevant section template missing?

Currency field is broken in repeats

Steps with new builder:

  • insert new repeat
  • insert dollars and cents field
  • enter a number in the field and tab out (this works)
  • insert a new repeat row ("+")

Issue 1: Notice that the field in the first row is now empty.

Issue 2: Notice that the field in the first row doesn't work anymore. The field in the new row does work.

This is probably due to the fact that the JavaScript doesn't restore the first field.

Upload: track correct repeat iteration

Currently, if an iteration moves between the start and end of an upload, the value of the upload might be set into the incorrect iteration.

Think about how to track the iteration, maybe with by tracking the correct repeat iteration with start/cancel/end events.

xxf:dynamic: clean solution for dynamic JS/CSS inclusion

See #31.

Implement a mechanism for the server to send new JavaScript/CSS to the client.

  1. The server needs to know if a given piece of JavaScript/CSS has been sent already, so not to send it again if this isn't needed.
  2. The Ajax response needs be able to contain either inline JavaScript (e.g. for the JavaScript included in the page for <xxforms:script>) and links to JavaScript files. Ditto for CSS.
  3. The client-side code needs to be able to load JavaScript and CSS, both inline and by URL. We already have code doing something similar in DeferredPortletLoader.coffee.
  4. The client-side code might need to initialize the code being loaded, depending on whether listeners to YUI's onDOMReady and jQuery's ready() are called right away when the JavaScript is loaded.

Model variable scoping is sometimes incorrect

Say you switch between model1 and model2 in the view. You see the following variables:

  • view variables up to switch to model2
  • model2 variables (incorrect)
  • view variables up to the top
  • model1 variables (incorrect)

Writeable XForms properties

The idea arose when thinking about more i18n mechanisms for the XForms engine / Form Runner.

Some thoughts:

  • write a property: set-property('my.foobar', value) or set-property('xxforms:foobar', value)
  • read a property: xxforms:property('my.foobar) or property('xxforms:foobar')
  • a property set via this mechanism overrides Orbeon Forms and model properties
  • the default values comes from Orbeon Forms and model properties
  • values must be part of the dynamic state (and serialized when needed)

Non-visible dialog content should be non-relevant

Currently, controls within a non-visible dialog are still evaluated, which is not efficient.

NOTE: Probably that just the content of the xxf:dialog element should be non-relevant, and the xxf:dialog element itself should remain relevant, so that it can receive events, in particular.

Should handle focus events for the component

See for instance what we do in the autocomplete.xbl. (A newer version of this code will listen on an event targeted at an enclosing group, and forward that event.) The XBL engine could always do this automatically for the component. The component could opt in for this to happen, but I can't think of cases where we wouldn't want this, other than maybe for backward compatibility, so we could have the focus handling always handled by the XBL engine by default.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.