Magnolia Compatibility


5.5(tick)
5.6(tick)
5.7(tick)

The Form2DB App is a community developed app that saves form data via formprocessor into jcr and keeps the possibility to export all entrys into XLS.

Version 1.0 (released Jun. '14 ) features list:

  • Provides a form-processor to save data into the workspace form2db

  • Add a workspace form2db

  • Add a custom app with excel export feature

  • Version 1.0.2: I've added the support to upload and download attachments of a form
  • Version 1.0.3: Fixed a big bug with nodetype errors.
  • Version 1.0.8: Add Attachments to Form Processor
  • Version 1.1.0: Support for Magnolia 5.4.x
  • Version 1.1.1: Fixed problem that uuid was not generated
  • Version 1.1.2: Added dam asset editing support to Form2DB app
  • Version 1.1.3: Added image preview
  • Version 1.2: Configurable structure from pages, Excel Exports fields according to the field order, Code cleanup, Bugfixes

Thanks for contribution:

A big thank you goes to Frank Sommer and his Team around Aperto, they helped to make the module more stable and adds some good ideas.

Install into an existing project

Jar files can be found on Magnolia Nexus. To add the app using module dependencies:

The Module works with minimum Magnolia 5.4.x

<dependency>
  <groupId>de.marvinkerkhoff</groupId>
  <artifactId>form2db-app</artifactId>
  <version>1.2</version>
</dependency>

PLEASE NOTE: Use a cluster configuration for the workspace form2db. Otherwise you will only find new entrys in the public instance. 

How does it work?

Add a new form processor to your form and use the class: 

de.marvinkerkhoff.form2db.processors.Form2dbProcessor

After you submit your form you should see it as an entry in the Form Database app. 

You can export all entrys of a single form OR export one single entry to excel. 

Update Nodes from Version 1.1.x

In version <1.2 we only provided a flat structure. With Version 1.2 we added a configuration parameter in the module jcr config where you switch to a new structure that represents the page structure. It's recommended to use this new structure for new projects. For old projects you can switch it to true.

We also provide a checkbox in the form dialog to start and stop storing. You can find it on an extra tab. If you want to update please add this checkbox to all dialogs and check them. Otherwise it will be not stored in the database.

For Contribution!

Feel Free to give me an idea how that module can be more useful for your projects.

License

GPLv3

Issues, Bugs and Improvements

Open a ticket here: FORMDB


16 Comments

  1. This looks really cool!

    But.. I cannot get it to work (in Magnolia 5.3.3). I would like to debug but it seems the source code is not available? Is it possible that you put the source code out there on Github or something? And another thing: how would you like to deal with issues, suggestions for improvements etc? It is an option to add it as a project to Magnolia's JIRA?

     

    1. Ah sorry, the source code is there already: http://git.magnolia-cms.com/gitweb/?p=forge/form2db.git;a=summary. It is just that the search function on http://git.magnolia-cms.com/gitweb/ does not seem to work at all.. Will investigate my issue further!

      Oh yes, one suggestion for improvement: add the source code (JAR) to your artefact in Nexus as well so people can easily debug.

      1. Hmm, Magnolia's Gitweb only seems to expose the master branch for the form2b project and also it stops at version 1.0.0 while in Nexus version 1.0.1 is available? Is it possible to fix this so that we can have a look at the most recent versions of your project (including the develop branch)?

        1. Ah, it seems the formNode node type could not be registered by the form2db module:

          2014-09-18 11:27:16,572 INFO  info.magnolia.jackrabbit.ProviderImpl             : Registering nodetype {http://www.magnolia.info/jcr/mgnl}formNode on repository magnolia
          2014-09-18 11:27:16,574 ERROR info.magnolia.module.ModuleManagerImpl            : 
          javax.jcr.RepositoryException
          [..]
          Caused by: org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException: [{http://www.magnolia.info/jcr/mgnl}formNode] invalid supertype: {http://www.magnolia.info/jcr/mgnl}lastModifiedBy
          
          	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.validateNodeTypeDef(NodeTypeRegistry.java:1477)
          
          	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.internalRegister(NodeTypeRegistry.java:1236)
          
          	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.registerNodeType(NodeTypeRegistry.java:187)
          
          	... 68 more
          
          If I am not mistaken lastModifiedBy is a property and not a (mixin) type itself:
          https://documentation.magnolia-cms.com/display/DOCS/Node+types
           
          Maybe this has been changed in Magnolia 5.3 or something?
          1. Thanks Marvin! I will create some issues for you to solve. (wink)

  2. I've updated the AppFinder entry at https://apps.magnolia-cms.com/app/Form2DB:

    • Note about new feature
    • Added license
    • Updated version number
  3. One thing to note is that when you use this module on your site you naturally will need to make sure that your users on the public instance (e.g. the anonymous user) have the correct permissions (read/write) on the form2db JCR workspace in order for the form data to be written to the JCR. And likewise of course you need to make sure that on the author instance you add similar permissions for your content managers / functional admins for them to be able to use the form2db app (i.e. permissions to the JCR and to the app itself).

    Marvin Kerkhoff, maybe you can add this to the module description above so that people don't forget?

  4. When using the form2db (1.1.3) with the upload file field we observed the following issue: 

    • the form2db workspace is a clustered repo. Public and author have access to it. That works just fine.
    • upload a file on the public instance using the upload file field on the public instance website.
    • login to the public instance, go to the form2db app, navigate to the uploaded file then download it (action "Download Asset"): works fine.
    • login to the author instance, go to the form2db app, navigate to the uploaded file then download it (action "Download Asset"): it does not work. There is an error. Message: "Error getting binary data from node [node /de/submission/7/web_vorlage_form.pdf] to download." The catalina log says: "Caused by: org.apache.jackrabbit.core.data.DataStoreException: Record 3fbf76220318aa3759a2114f2ade5dbc6636c193 does not exist"

    That's weird, since it does work on the public instance. Is that a know issue? Is there a solution to that?

    1. I can't reproduce that issue on our different instances. Can you verify if this has to do with your setup / indexing? Are you seeing attachments in the DB app?

      1. Thanks for the quick answer! I'll see if I can figure out whether it has to do with the setup/indexing, maybe as Frank says...

        I can see attachements in the form2db App. Here's a printscreen of the author instance form2db app.

    2. I think it depends on the cluster configuration. With a FileDataStore you have to share the files between author and publics, too.

      1. I'll try to configure that. Any hints?

        1. Do not use the data store and persist the binaries in same way like the other content. See https://wiki.apache.org/jackrabbit/Clustering#Data_Store_Configuration

          1. Thanks Frank and Marvin! It works!

            For future readers: since data has been stored from the public instance so far (and needs to be downloadable from the author instance), here is what I did:

            • in /webapps/magnoliaAuthor/repositories/magnoliaClustered/repository I deleted the 'datastore' folder and 
            • added a symbolic link called "datastore" linking to /webapps/magnoliaPublic/repositories/magnoliaClustered/repository/datastore
            1. That doesn't sound right. I never used such a symbolic link.