Support Forum

 
You must be logged in to post
Search Forums:


 






Wildcard Usage:
*    matches any number of characters
%    matches exactly one character

Confirmation Page

Feature Request
No Tags
UserPost

2:00 pm
April 12, 2010


jenny

1

I have a multi-page form.  Is there an easy way to make a page that prints out the previously entered data as a "confirm your entries" page.  Thanks.

7:31 am
April 16, 2010


Steph

2

Have you tried using a custom display? You could display your entries with that, and add a print button. Take a look at this post for tips on adding a print button. Does this answer your question?

1:48 pm
April 16, 2010


jenny

3

I don't think that's quite what I'm looking for.  I have a multi-page form and need to give users a page to review all the data they have inputted into the form before they submit.  So the form is not saved to the database yet.  Does that make sense?  Thanks.

8:19 pm
April 20, 2010


Steph

4

I see… I don't think there's an easy way to do this right now before the form is submitted. I'll look into this though for a later release. Sorry.

1:11 pm
April 21, 2010


jenny

5

Thanks Steph,

I made some really custom edits to make it work for me by putting in a hidden field type on the page and then checking for that specific hidden field value in show-other.php and displaying all the inputted when that hidden field is found.

It works nicely but now I will have to fix it when you release an update.  There is probably a better way but to use some of your built in hooks and hopefully I'll find a better way to do it later.

1:28 pm
April 22, 2010


Steph

6

Good thinking. This will probably be in the release after the next one. You can pull this out pretty easily so you won't lose it on upgrade.

add_action('frm_show_other_field_type', 'review responses');
function review responses($field){
    $field_name = "item_meta[$field[id]]";
    require(path to the new file with your changes);
}

9:20 am
July 5, 2010


redg

7

Hi Jenny, i'm very curious about the solution.

I try to do the same thing as you, i'm not really a programmer, and i'm bit lost …

I really appreciate your helpSmile

12:57 pm
July 13, 2010


jenny

8

I put a hidden form field named confirm in my form on its own page (using the multi-page function in pro) and the following code displays the confirmation page instead of the hidden field.

If I remember correctly, it only makes text, text area, and select boxes editable.  If you have radio buttons it won't work with those.

It also used the jeditable jquery plugin – http://www.appelsiini.net/proj…../jeditable – but I think formidable is already linking to the jquery scripts that you need.

I hope this makes sense.  I only needed it for one site so I haven't tested it outside of the one form it was needed for.

add_action('frm_show_other_field_type', 'review_responses');
function review_responses($field) {
    $field_name = "item_meta[$field[id]]";
    if ($field['name'] == 'Confirm'){
        global $frm_prev_page, $frm_field, $frm_form;
        $form = $_POST['form_id'];
        $values = $frm_field->getAll("fi.type not in ('divider', 'captcha', 'break') and fi.form_id=$field[form_id] and fi.field_order < $field[field_order]", ' ORDER BY field_order');
        
        foreach ($values as $value){
            $this_id = $value->id;
            $this_name = $value->name;
            $this_value = '';
            
            if (isset($_POST['item_meta'][$this_id])){
                $this_value = $_POST['item_meta'][$this_id];
                while (strstr($this_value, '')) {
                       $this_value= stripslashes($this_value);
                   }
            }
               
            echo '<div id="item_meta[' . $this_id . ']" class="editthis"><span class="confirm_title">' . $this_name . "</span><br>n";
            
            if ($value->type == 'text'  || $value->type == 'email'  || $value->type == 'phone'){
                if ($this_value != '') echo '<span class="edit" style="width:300px;">' . $this_value . '</span>';
                else echo '<span class="edit"></span>';                    
            }
            else if ($value->type == 'textarea') {
                if ($this_value != '') echo '<span class="edit_area">' . $this_value . '</span>';
                else echo '<span class="edit_area">No Information Provided</span>';
            }
            else if ($value->type == 'select'){
                $editname = $value->id;
                $editjson = "{'':''";
                $edits=unserialize($value->options);    
                foreach ($edits as $edit)    {
                    $editjson = $editjson . ",'" . $edit . "':'" . $edit . "'";
                }
                $editjson = $editjson . '}';
                if ($this_value != '') echo '<span class="edit_' . $editname . '">' . $this_value . '</span>';
                else echo '<span class="edit_' . $editname . '"></span>';    
                ?>
                <script>$(document).ready(function() {$('.edit_<?php echo $editname ?>').editable(function(value, settings) {var thisFieldName = $(this).parent().attr('id');var thisInput = $('[name='+thisFieldName+']').val(value);return(value);}, {type : 'select', cssclass : 'editable',data: <?php echo $editjson ?>, submit : 'Update',width : '300px',indicator : 'Saving…', cancel : 'Cancel',tooltip : 'Click to edit…',placeholder : 'No Information Provided', onblur : 'submit'});});</script>
                <?php     
            }
            echo "<br><br></div>n";
        }?>
        <script>
        $(document).ready(function() {
            $('.edit').editable(function(value, settings) {
                var thisFieldName = $(this).parent().attr('id');
                thisInput = $('[name='+thisFieldName+']').val(value);
                return(value);
              }, {
                 type    : 'text',
                 cssclass : 'editable',
                 submit  : 'Update',
                 indicator : 'Saving…',
                 cancel    : 'Cancel',
                 tooltip   : 'Click to edit…',
                 placeholder : 'No Information Provided',
                 width    : '300px',
                 onblur : 'submit'
             });
            $('.edit_area').editable(function(value, settings) {
                var thisFieldName = $(this).parent().attr('id');
                var thisInput = $('[name='+thisFieldName+']').val(value);
                return(value);
              }, {
                 type    : 'textarea',
                 cssclass : 'editable',
                 width     : '300px',
                 rows    : '5',
                 submit  : 'Update',
                 indicator : 'Saving…',
                 cancel    : 'Cancel',
                 tooltip   : 'Click to edit…',
                 placeholder : 'No Information Provided',                                     
                 onblur : 'submit'
             });
        });
        
        (function($){ $.fn.editable = function(target,options){ if('disable' == target){ $(this).data('disabled.editable',true);return;}
        if('enable' == target){ $(this).data('disabled.editable',false); return;}
        if('destroy'==target){ $(this).unbind($(this).data('event.editable' )).removeData('disabled.editable').removeData( 'event.editable');return;}
        var settings=$.extend({},$.fn.editable.defaults,{ target:target},options); var plugin = $.editable.types[settings.type].plugin || function(){}; var submit = $.editable.types[settings.type].submit || function(){};var buttons = $.editable.types[settings.type].buttons || $.editable.types['defaults'].buttons; var content = $.editable.types[settings.type].content || $.editable.types['defaults'].content;var element = $.editable.types[settings.type].element || $.editable.types['defaults'].element; var reset = $.editable.types[settings.type].reset || $.editable.types['defaults'].reset; var callback = settings.callback || function(){}; var onedit = settings.onedit || function(){}; var onsubmit = settings.onsubmit || function(){}; var onreset = settings.onreset || function(){}; var onerror = settings.onerror || reset;if(settings.tooltip){ $(this).attr('title',settings.tooltip);}
        settings.autowidth='auto' == settings.width;settings.autoheight='auto' == settings.height; return this.each(function(){ var self = this; var savedwidth = $(self).width(); var savedheight = $(self).height(); $(this).data('event.editable',settings.event); if(!$.trim($(this).html())){ $(this).html(settings.placeholder);}
        $(this).bind(settings.event,function(e){ if(true === $(this).data('disabled.editable')){return;}
        if(self.editing){return;}
        if(false === onedit.apply(this,[settings,self])){return;}
        e.preventDefault();e.stopPropagation(); if(settings.tooltip){$(self).removeAttr('title');}
        if(0==$(self).width()){ settings.width=savedwidth;settings.height=savedheight;}else{ if(settings.width!='none'){ settings.width=settings.autowidth? $(self).width():settings.width;}
        if(settings.height!='none'){ settings.height=settings.autoheight? $(self).height():settings.height;}}
        if($(this).html().toLowerCase().replace(/(;|")/g, '') == settings.placeholder.toLowerCase().replace(/(;|")/g, '')){ $(this).html('');}
        self.editing = true;self.revert=$(self).html(); $(self).html('');var form = $('<form />'); if(settings.cssclass){ if('inherit'==settings.cssclass){ form.attr('class',$(self).attr('class')); }else{form.attr('class',settings.cssclass);}}
        if(settings.style){if('inherit' == settings.style){form.attr('style', $(self).attr('style')); form.css('display', $(self).css('display')); }else{ form.attr('style', settings.style);}}
        var input = element.apply(form,[settings,self]); var input_content; if(settings.loadurl){var t = setTimeout(function(){ input.disabled=true;content.apply(form,[settings.loadtext,settings,self]); }, 100); var loaddata={};loaddata[settings.id] = self.id; if($.isFunction(settings.loaddata)){$.extend(loaddata,settings.loaddata.apply(self,[self.revert,settings])); }else{ $.extend(loaddata,settings.loaddata);}
        $.ajax({type:settings.loadtype, url:settings.loadurl, data:loaddata, async:false, success:function(result){ window.clearTimeout(t); input_content=result; input.disabled=false;}}); }else if(settings.data){input_content=settings.data;if($.isFunction(settings.data)){input_content = settings.data.apply(self,[self.revert,settings]);} }else{ input_content = self.revert;}
        content.apply(form,[input_content,settings,self]); input.attr('name', settings.name); buttons.apply(form,[settings,self]); $(self).append(form); plugin.apply(form,[settings,self]); $(':input:visible:enabled:first', form).focus(); if(settings.select){input.select();}
        input.keydown(function(e){if(e.keyCode == 27){e.preventDefault(); reset.apply(form,[settings,self]);}}); var t;if('cancel' == settings.onblur){input.blur(function(e){t = setTimeout(function(){reset.apply(form,[settings,self]); }, 500);}); }else if('submit' == settings.onblur){input.blur(function(e){t = setTimeout(function(){form.submit();}, 200);}); }else if($.isFunction(settings.onblur)){ input.blur(function(e){settings.onblur.apply(self,[input.val(), settings]);}); }else{ input.blur(function(e){});}
        form.submit(function(e){if(t){clearTimeout(t);}
        e.preventDefault(); if(false !== onsubmit.apply(form, [settings,self])){if(false! == submit.apply(form,[settings,self])){ if($.isFunction(settings.target)){var str = settings.target.apply(self,[input.val(),settings]); $(self).html(str); self.editing = false;callback.apply(self,[self.innerHTML,settings]); if(!$.trim($(self).html())){ $(self).html(settings.placeholder);} }else{ var submitdata={}; submitdata[settings.name] = input.val(); submitdata[settings.id] = self.id;if($.isFunction(settings.submitdata)){ $.extend(submitdata,settings.submitdata.apply(self,[self.revert,settings])); }else{ $.extend(submitdata, settings.submitdata);}
        if('PUT' == settings.method){ submitdata['_method'] = 'put';}
        $(self).html(settings.indicator); var ajaxoptions ={type:'POST', data:submitdata, dataType:'html', url:settings.target, success:function(result,status){ if(ajaxoptions.dataType=='html'){ $(self).html(result);}
        self.editing = false;callback.apply(self,[result,settings]); if(!$.trim($(self).html())){ $(self).html(settings.placeholder);}}, error:function(xhr,status,error){onerror.apply(form,[settings,self,xhr]);}}; $.extend(ajaxoptions,settings.ajaxoptions); $.ajax(ajaxoptions);}}}
        $(self).attr('title', settings.tooltip); return false;});}); this.reset = function(form){ if(this.editing){if(false !== onreset.apply(form,[settings,self])){$(self).html(self.revert); self.editing = false; if(!$.trim($(self).html())){ $(self).html(settings.placeholder);}
        if(settings.tooltip){ $(self).attr('title',settings.tooltip);}}}};});}; $.editable = {types:{defaults:{ element:function(settings,original){ var input = $('<input type="hidden"></input>'); $(this).append(input); return(input);}, content:function(string, settings, original){ $(':input:first', this).val(string);}, reset:function(settings, original){ original.reset(this); }, buttons:function(settings,original){var form = this; if(settings.submit){if(settings.submit.match(/>$/)){ var submit = $(settings.submit).click(function(){if (submit.attr("type") != "submit"){form.submit();}}); }else{var submit = $('<button type="submit" />'); submit.html(settings.submit);}
        $(this).append(submit);}
        if(settings.cancel){if(settings.cancel.match(/>$/)){ var cancel=$(settings.cancel);}else{var cancel = $('<button type="cancel" />');cancel.html(settings.cancel);}
        $(this).append(cancel); $(cancel).click( function(event){if( $.isFunction( $.editable.types[settings.type].reset)){ var reset = $.editable.types[settings.type].reset; }else{ var reset = $.editable.types['defaults'].reset;}
        reset.apply(form,[settings,original]); return false;});}}}, text:{element:function(settings,original){ var input = $('<input />'); if(settings.width !=' none'){ input.width(settings.width);}
        if(settings.height != 'none'){ input.height(settings.height);}
        input.attr('autocomplete', 'off'); $(this).append(input);return(input);}}, textarea:{ element:function(settings, original){ var textarea = $('<textarea />'); if(settings.rows){ textarea.attr('rows', settings.rows); }else if(settings.height != "none"){ textarea.height(settings.height);}
        if(settings.cols){ textarea.attr('cols',settings.cols); }else if(settings.width! = "none"){ textarea.width(settings.width);}
        $(this).append(textarea);return(textarea);}}, select:{ element:function(settings, original){var select = $('<select />'); $(this).append(select); return(select);}, content:function(data, settings, original){if(String == data.constructor){ eval('var json = '+data); }else{ var json = data; }
        for(var key in json){ if(!json.hasOwnProperty(key)){continue;}
        if('selected' == key){continue;}
        var option = $('<option />').val(key).append(json[key]); $('select',this).append(option);}
        $('select', this).children().each(function(){ if($(this).val() == json['selected'] || $(this).text() == $.trim(original.revert)){ $(this).attr('selected','selected');}});}}}, addInputType:function(name,input){ $.editable.types[name]=input;}}; $.fn.editable.defaults = { name:'value', id:'id',type:'text', width:'auto', height:'auto', event:'click.editable', onblur:'cancel', loadtype:'GET', loadtext:'Loading…', placeholder:'Click to edit', loaddata:{},submitdata:{}, ajaxoptions:{}};})(jQuery);
        </script>
        <?php
    }
}

Feature Request
No Tags