Manage and deploy dynamic forms
Ruby JavaScript HTML CSS
Latest commit 0cd30ca Jun 9, 2015 andys increase maxsize of upload file record fields to fix issue with long …
…mime-type names

README.md

IntraForms

Use intraForms to easily create, manage and deploy Alpaca forms throughout an organization's applications.

The main objectives of this project are to:

  • Allow non-programmers, such as Business Analysts, to easily create and test business forms
  • Provide programmers a simple, extensible framework to implement business logic and back-end integration for form submissions
  • Easily deploy and seamlessly integrate business forms into Web applications

NOTE this project is undergoing a major re-write/re-factor to be packaged as a gem, so likely no more major commits will be made here but new version will be available soon.

Any bug reports, comments or suggestions are welcome!

Features

  • Manage and deploy elegant custom modal dialog forms to Web applications
  • Simple YAML model files to define form schema, fields and wizards
  • Simple, extensible handlers to to handle form submissions
  • Simple templates for user response and submission views using Slim
  • File based deployment provides simple management
  • Form models can be managed and deployed via a VCS such as Git
  • Optional submission data persistence in a database
  • Authentication per form context or global configuration
  • Authentication via internal database, LDAP/AD or custom handlers
  • Authorization with configurable permissions
  • Field level authorization
  • Easy client-side integration of forms into other applications
  • Multiple file upload support (WIP)
  • Cross domain support via CORS
  • Built on robust, easy to maintain Sinatra framework
  • Client-side Javascript deployed as AMD modules

Upcoming features

  • Automatic post-submit callbacks, such as emailing submissions
  • Template based rendering of submissions as PDF files
  • Asynchronous task scheduling and execution
  • Integration with BPM engines such as Activiti
  • Submission management interfaces

Getting Started

Installation

If you haven't done so already, install Ruby for you your platform.

Install bundler gem (you may need to do this as root):

gem install bundler

Get the latest stable build (assuming you have Git installed):

cd ~/my-projects
git clone https://github.com/intraforms/intraforms-base.git
cd intraforms-base

Install dependency gems (you may need to do this as root):

bundle install

note: the app uses SQLite for persistence by default, so you may need to install that first

Running the app

This will start a local WEBrick/Rack server:

rackup -o 0.0.0.0 -p 9292 config.ru

Once running, navigate here to see the examples:

http://localhost:9292

Using the default example forms

Several example forms are provided by default, including:

  • test/basic_fields

    Demonstrates some basic Alpaca fields in a simple form

  • test/submit_file

    Basic file upload form

note: the file upload feature is a work in progress at the moment so there are know issues here:)

  • redmine/create_issue

    Simple form to create a Redmine bug report issue

  • redmine/create_issue_wizard

    Example wizard form to create a Redmine bug report issue

note: the back end for the Redmine forms are disabled by default as you need to configure them

take a look at ./deployed_forms/redmine/model.yml for configuration options

Modifying the example forms

One easy thing to do is to add some new fields to an existing form. For example, try adding some fields to the basic test form:

  • Edit the model -> ./deployed_forms/test/basic_fields/model.yml

  • In the schema section, add a new field property definition

  • In the fields section, add a new field description

note: the syntax pretty much follows the Alpaca Documentation

however, please note that, unlike Alpaca, schema definitions are required for all fields

Creating new forms

Adding new forms is fairly straight forward:

  • Create a new Form Package -> ./deployed_forms/my_package

    • Add a form package/base model file -> ./deployed_forms/my_package/model.yml
      • Add a title to the model
      • Add a description to the model
  • Copy an existing Form to the new Form Package -> ./deployed_forms/my_package/forms/my_form

  • Edit the form's title, description, schema and fields -> ./deployed_forms/my_package/forms/my_form/model.yml

  • Add a menu icon for the form -> ./deployed_forms/my_package/forms/my_form/public/images/form-icon.png (min 32x32px)

  • Reload the default app page and test your form

note: in a development environment (default) new forms and changes are automatically reloaded. However, in a production environment, forms models are cached, so you will need to restart the app (or touch ./deployed_forms/reload.txt)

Integrating forms into other Apps

Add these tags to your page <head> tag:

<link href="http://intraforms-server/assets/css/base.css" rel="stylesheet" type="text/css" />
<script src="http://intraforms-server/assets/js/base.js" type="text/javascript">

Then add a div with this class to automatically render menus for all deployed forms:

<div class="intraforms-menu"></div>

Or this to render menus just for a specific Form Package (e.g. Redmine):

<div class="intraforms-menu-redmine"></div>

Or if you want custom links to launch specific form dialogs:

<ul>
  <li>
    <a class="intraforms-link-test-basic_fields" href="#">
      Show the Test form with Basic Fields
    </a>
  </li>
  <li>
    <a href="#intraforms-link-redmine-create_issue_wizard">
      Show Redmine Create Issue Wizard form
    </a>
  </li>
  <li>
    <a href="http://intraforms-link-redmine-create_issue">
      Show Redmine Create Issue form
    </a>
  </li>
</ul>

LICENSE

Copyright 2014 Andreas Scholz (andy.scholz@image80.com)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

For the latest versions of this code, please go to:

https://github.com/intraforms/intraforms-base