I'm currently designing a rather complex InfoPath form for a client. In the future, the client is going to need to be able update the form themselves, but the complexity of dealing with all the rules and conditional formatting is too much for them.
Is there any way for me to automate a routine design task in InfoPath designer, such as adding a few new fields and linking them to controls on the form?
Ultimately, it would be nice if my client could just type something in a text box and hit a button, then all the predictable and tedious design work to update the form would be done automatically.
Thanks
Use template parts. They can be created in InfoPath and are used for repetitive tasks where the same controls, data fields, etc are used over multiple forms. I believe they even include data validation, rules, and formatting. It is basically like inserting a mini InfoPath form into another one as a section. The help file in IP explains the steps but no code is involved and it is fairly easy.
Related
I want users to be able to submit nodes and comments via AJAX. I also want to do some fairly extensive customization of the node and comment forms.
I've spent time looking through documentation and code examples for Drupal 7's Form API and Ajax framework, but I find it very complex. Therefore, I simply want to create my own form in HTML and use my own JavaScript code to submit it via Ajax. I'll also set up a specific URL for processing these Ajax requests, which will ultimately call node_save() or comment_save() when appropriate.
What are the downsides to doing it this way as opposed to going through the Form API and Ajax framework? I'm not creating modules for contribution to the community. Everything is just for my own site.
Technically, yes you can do this with no ill effects. There have been times where i have had to import data from feeds and have used node_save manually.
What you are missing out on is the flexibility that drupal offers. For example, want to add a new checkbox to the form to indicate a featured item? Now you have to manually update the form to add the field and update the submit handler to save the data. Had you used drupal's system it would of been auto-populated for you.
Further on flexibility, say for example, you decide you want to add a CAPTCHA field to your form. All you would have to do is enable the CAPTCHA module and specify the form you want it on and it would be done for you. There are a bunch of 3rd party modules that let you do things like this.
Drupals form system also lets you add more complicated items such as date selectors, or even managed file uploads, which can save you a lot of time once you are familiar with the API.
If your looking just to get the project done and not spend time learning something new, sure you can do it all manually. I can promise you any drupal developer that looks at your code in the future will have a very low opinion of your work. Depending on your situation this may or may not be important. But really the biggest thing you are missing out on is ease of maintenance and flexibility.
So just to recap:
pros:
it will work
quick and easy
comfortable
cons:
loss of flexibility
harder to maintain
inability to take advantage of drupals form widgets / helpers
inability to take advantage of 3rd party modules
shame from other developers
Lack of sleep from dirty feeling
eternal damnation
The usual argument would be about portability I guess, but if you're not going to be porting these modules to another Drupal site then I guess that falls down.
The same can be said for offering other modules the chance to alter your form based on some global/inherited setting, but again if you really don't want/need this functionality then it can't really be used as an argument against.
The one thing you will lose out on is the built in Cross-Site Request Forgery protection. As long as you're rolling your own version of that, though, you should be ok.
If you plan to use Drupal a lot I'd recommend getting used to the FAPI though...after a while it actually becomes a lot easier to use the FAPI than write out custom HTML.
I am just assigned a project to make a paper based process to be web based. What I need to do is to allow user to fill out an online form and sign it using his/her mouse. The data entered and the signature needs to be later retrieved as a PDF file.
So, I've created a working prototype using ASP.NET webforms and a third party PDF library ( iTextSharp), along with a mouse signature capture tool that I purchased.
The prototype works fine. But my concern is, I may need to extend this application to support many ( maybe hundreds of) forms. Each form has different fields, but they all require a signature. It took me 2 days to build the prototype for one form, including creating the web forms, mark fields in PDF template, hook up web form fields with fields in PDF form, etc...In the future I don't want to spend 2 days to set up each form, is there a better way than building custom form using ASP.NET?
I know of InfoPath, but never used it, has anyone done anything similar before? Is InfoPath with SharePoint a better solution to my problem? Or there is something else? If anyone can give me some advice, I would greatly appreciate it.
Thanks a lot!
The advantage that infopath has is that it has the ability to take advantage of digital ink (handwriting) out of the box. if your version of Windows includes Microsoft Ink (XP tablet, Vista, Win 7) then Infopath will allow you to capture text and images using various available input devices (mouse, pen etc..) depending on the control that you use. A textbox will using handwriting recognition to convert the writing into text, where as an image box will allow free drawing, ideal for caputring a signature.
I have used Infopath as a standalone disconected client system that used email as the transport system. the forms were attatched to an email and added to the outbox. when the user retrieved their email, the forms were automatically sent. The great thing about infopath is that the data is xml. this gives you enourmous flexabilty with what you can do with the data.
As a side note...
You may want to think about the legal side of things when people are signing (using handwriting) e-forms. As Infopath seperates the presentation and the data, which is great for capturing the data for reporting, workflow etc, it becomes a downside from a legal standpoint as the data can be manipulated and presented very differently from what the signee originally signed. In most cases this is not problem, but if the the form is any form of legal document (invoice, goods receipt) you will need to think about how to keep both the data and presentation together and seperate at the same time.
This will be a problem for any system that seperates the data from the presentation, be it web based forms, infopath, or PDF forms.
Hope this helps...
I have also been tasked with a similar problem to solve. I looked at solutions like Adobe LifeCycle but we wanted to use SharePoint as an ECM. One of the problems with InfoPath is that it requires SharePoint or the InfoPath desktop application to fill out the forms. If you don't already have SharePoint setup or cannot use SharePoint, then InfoPath is not the way to go. I didn't want to duplicate efforts by having to create the entire form using html forms and then have to merge all that data onto a printable version for them to sign... seemed like duplicating efforts so I saw InfoPath as a possible solution. Adobe LifeCycle seemed almost a better way to go because we can just use a fillable PDF to capture, do some validation and submit the data. However, Adobe LifeCycle was very expensive so wasn't a good solution for the project.
So if its not a problem having SharePoint as part of your solution, then by all means go for it. But, if you need people to fill out the InfoPath form and not use the desktop client or be logged into SharePoint, then I don't think it's the right solution.
#sean717: You approach with itextsharp reminds me of the existing tool we use in our company. Check www.pdfsharepoint.com if you want to both highly interactive pdf forms and integration with SharePoint 2010. It works for us.
I need a forms technology similar to MS InfoPath or Adobe LiveCycle Forms ES in that it has an XML data structure, is compatible with ASP.NET, renders in a browser, and is easily configurable by non technical office worker types. TurboTax Online is a good example of the type of functionality I have in mind.
The missing piece that I have not yet a solution for is that it be able to operate like a wizard such that responses to certain steps dynamically with AJAX or Flash/Silverlight or some kind of RIA either prompt or hide or alter subsequent parts of the form. It needs to be able to save all results or partial results to persistent form.
This would be easy to program the functionality but need a technology that can create / generate these forms and be able to set the rules in some sort of easily configurable way - the same way an office worker can create a form with InfoPath at least with perhaps a workflow style tool to set the ruls and flow of the form.
Was there a reason you didn't investigate Adobe LiveCycle ES2 any further?
It seems to be a good fit for your requirements, and does have a wizard like feature called Form Guides. You can hide/show sections based on user input, and have form events trigger calls to web services.
Given when you posted this, Guides may not have yet been implemented in LiveCycle - might be worth looking at again if this is still relevant for you.
We have about 10 applications that basically do the same thing, all written using the Wizard Control for .Net 2.0. The flow they follow is pretty simple:
1. User selects option from a drop downs.
2. Next page has more options more narrowed.
3. User sees confirmation page.
4. Report is generated.
Some of these applications have optional pages, such as allowing the user to upload custom images for the report and allowing the user to select specific lines of data.
I'm attempting to merge these applications, but I'm not sure I'm approaching this the correct way. My first inclination is to create configuration tables in SQL to drive the menus that appear. So, for example, there might be a table with the WizardId, Name, Theme, etc., also a table of steps, and another table to link everything together.
Is there an easier way to approach this that I'm just missing?
We've been thinking through this issue lately and I've come up with two options that both seem valid, just have different uses. One way to do it, similar to what you have described, is to create the following:
A table that holds the wizard information
A table that lists the types of questions to be asked in each wizard
A table to hold the data entered by the user for each question
This is very flexible, but the problem is you have to dynamically generate all the controls you need to collect the information (textbox, drop down, radio, file upload, etc) and store how to display that control in your database.
The other approach that we have tried out on a recent project is to associate a user control with either each wizard or type of wizard step. It isn't as modular, but you have a lot of control over how the controls are arranged and how you collect the data.
I think both approaches are useful in different scenarios. Going with a database driven approach allows you to generate new questions and wizards easily, but lacks the user friendly approach that we wanted for our new application.
I'm about to create a web application that requires a lot of different web forms where the user needs to be able to input a lot of different types of information. What I mean is that one of those forms may require some text input fields, some integer input fields, some decimal input fields, some date input fields, some datetime input fields, etc.
I would like to have a, maybe JavaScript-based, control library that I can simple provide with some text labels, input types and default values. The control library would then somehow render the form in HTML without me having to create an HTML table, select the appropriate standard web controls and all that.
I have used dhtmlxGrid to create quite a lot of tables and that works well for me. What I need now is something that can help me in a similar way when creating something like card forms.
I have also found ActiveWidgets, but it looks like it will require a lot of work on my behalf. I'm not only looking for individual web controls, but rather something like a library that can help me with the overall card.
I'm guessing many of you have had this problem before. Looking forward to hearing what solutions you have found to be the best. BTW: I'm working in VisualStudio with ASP.NET.
I would be tempted to look at Ext JS for this.
Ext JS
have you had a look at InputEx
I know it doesn't answer the question, but I have always written my own, or rather written it once and tweaked it for other apps. When I store the questions in the DB I store what input type it is, then on the form I dynamically create the appropriate control depending on which input type the question needs and add that control to a dynamically created table cell as I go.
If you choose to do that just remember when processing the form that the controls don't exist on postback, you need to recreate them.
It is not too bad to write it, if you have the time. My current form module is running a few dozen forms from the one module.