Advertisement
agordon86

added multi-form support

Jan 4th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function itsg_ajaxupload_restore_input( ajaxupload_input ) {
  2.     var ajaxupload_gf_input = ajaxupload_input.prev();
  3.     var ajaxupload_progress = ajaxupload_input.siblings( '.progress' );
  4.     var ajaxupload_results = ajaxupload_input.siblings( '.results' );
  5.     var ajaxupload_cancel_button = ajaxupload_input.siblings( '.itsg_single_ajax_cancel' );
  6.     var ajaxupload_remove_button = ajaxupload_input.siblings( '.itsg_single_ajax_remove' );
  7.  
  8.     ajaxupload_input.show();
  9.     ajaxupload_gf_input.val( '' );
  10.     ajaxupload_progress.remove();
  11.     ajaxupload_results.remove();
  12.     ajaxupload_cancel_button.remove();
  13.     ajaxupload_remove_button.remove();
  14.  
  15.     ajaxupload_input.focus();
  16. }
  17.  
  18. function itsg_ajaxupload_maybe_restore_buttons( form_id ) {
  19.     if ( ! window[ 'itsg_gf_ajaxupload_uploading_' + form_id ] ) {
  20.  
  21.         jQuery( '#gform_' + form_id + ' .gform_next_button:visible' ).attr( 'value', window[ 'itsg_gf_ajaxupload_next_value_' + form_id ] );
  22.         jQuery( '#gform_' + form_id + ' .gform_previous_button:visible' ).attr( 'value', window[ 'itsg_gf_ajaxupload_previous_value_' + form_id ] );
  23.         jQuery( '#gform_' + form_id + ' .gform_button[type="submit"]:visible' ).attr( 'value', window[ 'itsg_gf_ajaxupload_submit_value_' + form_id ] );
  24.         jQuery( '#gform_' + form_id + ' a.gform_save_link:not(.top_button):visible' ).text( window[ 'itsg_gf_ajaxupload_save_value_' + form_id ] );
  25.     }
  26. }
  27.  
  28. // remove uploaded file from server, if current user has permission. There is also a server side check.
  29. function itsg_ajaxupload_remove_upload( ajaxupload_gf_input_value, ajaxupload_input ) {
  30.     // load localized settings
  31.     var ajax_url = itsg_gf_ajaxupload_js_settings.ajax_url;
  32.     var allowdelete = itsg_gf_ajaxupload_js_settings.allowdelete;
  33.     var form_id = itsg_gf_ajaxupload_js_settings.form_id;
  34.     var entry_user_id = itsg_gf_ajaxupload_js_settings.entry_user_id;
  35.  
  36.     if( '' != ajaxupload_gf_input_value && 'null' != ajaxupload_gf_input_value && undefined != ajaxupload_gf_input_value ) {
  37.         if ( '1' == allowdelete ) {
  38.             var file_name = decodeURIComponent( ajaxupload_gf_input_value.split( '/' ).pop() );
  39.             var data = {
  40.                 'action': 'itsg_ajaxupload_delete_file',
  41.                 'file_name': file_name,
  42.                 'form_id': form_id,
  43.                 'entry_user_id': entry_user_id
  44.                 };
  45.  
  46.             var req = jQuery.ajax({
  47.                 url: ajax_url,
  48.                 type: 'POST',
  49.                 data: data
  50.                 });
  51.         }
  52.     }
  53.     itsg_ajaxupload_restore_input( ajaxupload_input );
  54. }
  55.  
  56. function itsg_gf_ajaxupload_display_upload( ajaxupload_input ){
  57.     // load localized settings
  58.     var thumbnail_enable = itsg_gf_ajaxupload_js_settings.thumbnail_enable;
  59.     var thumbnail_width = parseInt( itsg_gf_ajaxupload_js_settings.thumbnail_width );
  60.     var text_file = itsg_gf_ajaxupload_js_settings.text_file;
  61.     var text_new_window = itsg_gf_ajaxupload_js_settings.text_new_window;
  62.     var text_remove = itsg_gf_ajaxupload_js_settings.text_remove;
  63.  
  64.     var ajaxupload_gf_input = ajaxupload_input.prev();
  65.     var ajaxupload_gf_input_value = ajaxupload_input.prev().val();
  66.  
  67.     var file_name = decodeURIComponent( ajaxupload_gf_input_value.split('/').pop() );  // get file name out of the input URL
  68.     var file_url = ajaxupload_gf_input_value;  // get file  URL
  69.     var file_extension = file_name.substr( file_name.lastIndexOf('.') + 1 ).toLowerCase();
  70.  
  71.     // if results already exist - stop
  72.     if ( typeof( ajaxupload_input.next( '.results' ) ) !== 'undefined' && ajaxupload_input.next( '.results' ).length ) return;
  73.  
  74.     if( ajaxupload_gf_input_value != '' && ajaxupload_gf_input_value != 'null' && ajaxupload_gf_input_value != undefined ) {
  75.         // create results bar
  76.         ajaxupload_input.after(
  77.             jQuery('<div/>', {
  78.                 'class': 'results'
  79.                 }).append(
  80.                     jQuery('<div/>', {
  81.                         'class': 'results-bar results-bar-success'
  82.                     })
  83.                 )
  84.         );
  85.  
  86.         var ajaxupload_results = ajaxupload_input.next( '.results' );
  87.         var ajaxupload_results_div = ajaxupload_input.next( '.results' ).children().first();
  88.         var time = jQuery.now();
  89.  
  90.         // create remove button
  91.         jQuery('<input/>', {
  92.             'class': 'button itsg_single_ajax_button itsg_single_ajax_remove',
  93.             'type': 'button',
  94.             'value': text_remove,
  95.             'aria-describedby': 'remove_' + time
  96.             }).append(
  97.                 jQuery('<span/>', {
  98.                         'id': 'remove_' + time,
  99.                         'class': 'sr-only',
  100.                         'text': text_remove + ' ' + text_file + ' ' + file_name
  101.                 })
  102.                 ).insertAfter( ajaxupload_input.next( '.results' ) ).click( function() {
  103.                 itsg_ajaxupload_remove_upload( ajaxupload_gf_input_value, ajaxupload_input );
  104.                 jQuery( this ).remove(); // delete the remove button
  105.             } );
  106.  
  107.         ajaxupload_input.hide();
  108.         ajaxupload_results.show();
  109.  
  110.         // if thumbnails enabled and upload is jpg, png, gif, jpeg
  111.         if ( ( '1' == thumbnail_enable ) && 'jpg' == file_extension || 'png' == file_extension || 'gif' == file_extension || 'jpeg' == file_extension ) {
  112.             var file_name_encoded = ajaxupload_gf_input_value.split('/').pop();  // get file name out of the input URL
  113.             var thumb_url = ajaxupload_gf_input_value.replace( file_name_encoded, 'thumbnail/' + file_name_encoded );  // get file  URL
  114.             ajaxupload_results_div.append(
  115.                 jQuery('<a/>', {
  116.                     'href': file_url,
  117.                     'target': '_blank',
  118.                     'class': 'thumbnail-link',
  119.                     'title': text_new_window
  120.                     }).append(
  121.                         jQuery('<img/>', {
  122.                             'src': thumb_url,
  123.                             'class': 'thumbnail',
  124.                             'onerror': 'if (this.src != \'' + file_url + '\') this.src = \'' + file_url + '\';',
  125.                             'alt': file_name,
  126.                             'title': file_name
  127.                         })
  128.                     )
  129.             );
  130.             ajaxupload_input.parent( 'td.gfield_list_cell' ).css( 'width', '200px' );
  131.             ajaxupload_results.addClass( 'done-thumbnail' );
  132.         } else {
  133.             if ( typeof( file_name ) !== 'undefined' && file_name.length > 60 ) {
  134.                 var file_name = file_name.substring( 0, 60 );
  135.             }
  136.             ajaxupload_results_div.append(
  137.                 jQuery('<a/>', {
  138.                     'href': file_url,
  139.                     'target': '_blank',
  140.                     'alt': file_name,
  141.                     'title': text_new_window,
  142.                     'text': file_name
  143.                 })
  144.             );
  145.             ajaxupload_results.addClass( 'done' );
  146.         }
  147.         ajaxupload_results_div.find( 'a' ).focus();
  148.     }
  149. }
  150.  
  151. function itsg_gf_ajaxupload_init(){
  152.     // load localized settings
  153.     var ajax_url = itsg_gf_ajaxupload_js_settings.ajax_url;
  154.     var file_size_kb = parseInt( itsg_gf_ajaxupload_js_settings.file_size_kb );
  155.     var file_types = itsg_gf_ajaxupload_js_settings.file_types;
  156.     var text_not_accepted_file_type = itsg_gf_ajaxupload_js_settings.text_not_accepted_file_type;
  157.     var text_file_size_too_big = itsg_gf_ajaxupload_js_settings.text_file_size_too_big;
  158.     var text_uploading = itsg_gf_ajaxupload_js_settings.text_uploading;
  159.     var text_error_title = itsg_gf_ajaxupload_js_settings.text_error_title;
  160.     var displayscripterrors = itsg_gf_ajaxupload_js_settings.displayscripterrors;
  161.     var text_complete = itsg_gf_ajaxupload_js_settings.text_complete;
  162.     var text_cancel = itsg_gf_ajaxupload_js_settings.text_cancel;
  163.     var text_remove = itsg_gf_ajaxupload_js_settings.text_remove;
  164.     var thumbnail_enable = itsg_gf_ajaxupload_js_settings.thumbnail_enable;
  165.     var file_chunk_size = parseInt( itsg_gf_ajaxupload_js_settings.file_chunk_size );
  166.     var form_id = itsg_gf_ajaxupload_js_settings.form_id;
  167.     var user_id = itsg_gf_ajaxupload_js_settings.user_id;
  168.     var entry_user_id = itsg_gf_ajaxupload_js_settings.entry_user_id;
  169.     var text_error_0 = itsg_gf_ajaxupload_js_settings.text_error_0;
  170.     var text_error_404 = itsg_gf_ajaxupload_js_settings.text_error_404;
  171.     var text_error_500 = itsg_gf_ajaxupload_js_settings.text_error_500;
  172.     var text_error_parse = itsg_gf_ajaxupload_js_settings.text_error_parse;
  173.     var text_error_timeout = itsg_gf_ajaxupload_js_settings.text_error_timeout;
  174.     var text_error_uncaught = itsg_gf_ajaxupload_js_settings.text_error_uncaught;
  175.     var text_file = itsg_gf_ajaxupload_js_settings.text_file;
  176.  
  177.     var url = ajax_url;
  178.     var i = 0;
  179.  
  180.     //applies the fileupload function to the file input field
  181.     jQuery( 'input.itsg_ajax_upload_browse' ).each(function () {
  182.         jQuery( this ).fileupload({
  183.             maxNumberOfFiles: 1,
  184.             singleFileUploads: false,
  185.             dropZone: jQuery( this ).parent( '.itsg_ajax_upload_dropzone' ),
  186.             maxChunkSize: file_chunk_size,
  187.             url: url,
  188.             dataType: 'json',
  189.             progressInterval: '500',
  190.             add: function( e, data ) {
  191.                 // error if more than one file dropped in dropzone
  192.                 if ( typeof( data.files ) !== 'undefined' && data.files.length > 1 ){
  193.                     alert( itsg_gf_ajaxupload_js_settings.text_only_one_file_message )
  194.                     return false;
  195.                 }
  196.                 // stop upload if file already uploaded to file
  197.                 if ( typeof( jQuery( this ).siblings( '.results' ) ) !== 'undefined' && jQuery( this ).siblings( '.results' ).length >= 1  ) {
  198.                     return false;
  199.                 }
  200.                 var ajaxupload_input = jQuery( this );
  201.                 var file_name = data.originalFiles[0]['name'];
  202.                 if ( itsg_gf_ajaxupload_js_settings.apostrophe_error_enable && file_name.indexOf("'") >= 0 ) {
  203.                     alert( itsg_gf_ajaxupload_js_settings.text_apostrophe_error_message )
  204.                     return false;
  205.                 }
  206.                 // make remove row button abort
  207.                 jQuery( document ).on( 'click', '.delete_list_item', function(){
  208.                     // when row is deleted - run the delete function to remove uploaded images from server
  209.                     //data.abort();
  210.                     var row = jQuery(this).parents( 'tr.gfield_list_group, tr.gfield_list_row_even, tr.gfield_list_row_odd' );
  211.                     itsg_gf_ajaxupload_remove_list_item( row );
  212.                 });
  213.  
  214.                 var uploadErrors = [];
  215.  
  216.                 // client side file type restrictions
  217.                 var acceptFileTypes = new RegExp( '(\.|\/)(' + file_types + ')$', 'i'); // ALLOWED FILE TYPES - CLIENT SIDE
  218.                 if( !acceptFileTypes.test( file_name ) ) {
  219.                     uploadErrors.push( text_not_accepted_file_type );
  220.                 }
  221.  
  222.                 // client side file size restrictions
  223.                 if ( data.originalFiles[0]['size'] > file_size_kb ) {  // MAX FILE SIZE - CLIENT SIDE
  224.                     console.log( data.originalFiles[0]['size'] );
  225.                     uploadErrors.push( text_file_size_too_big );
  226.                 }
  227.  
  228.                 // if there were client side upload errors - display them
  229.                 if ( typeof( uploadErrors ) !== 'undefined' && uploadErrors.length > 0 ) {
  230.                     alert( uploadErrors.join( '\n' ) );
  231.                 } else {
  232.                     jQuery.blueimp.fileupload.prototype.options.add.call( this, e, data );
  233.  
  234.                     // all good - time to submit
  235.                     data.submit();
  236.  
  237.                     // hide the ajaxupload field
  238.                     ajaxupload_input.hide();
  239.  
  240.                     var time = jQuery.now();
  241.  
  242.                     // create cancel button
  243.                     jQuery('<input/>', {
  244.                         'class': 'button itsg_single_ajax_button itsg_single_ajax_cancel',
  245.                         'type': 'button',
  246.                         'value': text_cancel,
  247.                         'aria-describedby': 'cancel_' + time
  248.                     }).append(
  249.                     jQuery('<span/>', {
  250.                             'id': 'cancel_' + time,
  251.                             'class': 'sr-only',
  252.                             'text': text_cancel + ' ' + text_uploading + ' ' + text_file + ' ' + file_name
  253.                     })
  254.                     ).insertAfter( ajaxupload_input ).click( function() {
  255.                             data.abort(); // abort the request
  256.                             jQuery( this ).remove(); // delete the remove button
  257.                             var form_id = jQuery( this ).closest( 'form' ).attr( 'id' ).split( '_' ).pop().trim();
  258.                             itsg_ajaxupload_maybe_restore_buttons( form_id ); // restore buttons
  259.                         });
  260.  
  261.                     // create progress bar
  262.                     ajaxupload_input.after(
  263.                         jQuery('<div/>', {
  264.                             'class': 'progress uploading'
  265.                             }).append(
  266.                                 jQuery('<div/>', {
  267.                                     'class': 'progress-bar progress-bar-striped active',
  268.                                     'role': 'progressbar',
  269.                                     'aria-valuemin': '0',
  270.                                     'aria-valuemax': '100',
  271.                                 }).append(
  272.                                     jQuery('<span/>', {
  273.                                         'class': 'sr-only'
  274.                                     })
  275.                                 )
  276.                             )
  277.                     );
  278.                 }
  279.             },
  280.             done: function( e, data ) {
  281.                 // upload has stopped
  282.                 var form_id = jQuery( this ).closest( 'form' ).attr( 'id' ).split( '_' ).pop().trim();
  283.                 window[ 'itsg_gf_ajaxupload_uploading_' + form_id ] = false;
  284.  
  285.                 var ajaxupload_input = jQuery( this );
  286.  
  287.                 jQuery.each( data.result.files, function( index, file ) {
  288.                     // catch false positive server side error messages
  289.                     if ( file.error ) {
  290.                         alert( file.error );
  291.  
  292.                         itsg_ajaxupload_restore_input( ajaxupload_input );
  293.  
  294.                         return; // end the function
  295.                     }
  296.                     // set the file url to the gravity forms field
  297.                     ajaxupload_input.prev().val( file.url );
  298.  
  299.                     // remove progress bar
  300.                     ajaxupload_input.next().remove();
  301.  
  302.                     // display the uploaded file
  303.                     itsg_gf_ajaxupload_display_upload( ajaxupload_input );
  304.  
  305.                     // remove cancel button
  306.                     ajaxupload_input.parent().find( '.itsg_single_ajax_cancel' ).remove();
  307.  
  308.                     // remove dropzone
  309.                     ajaxupload_input.parent( '.itsg_ajax_upload_dropzone' ).removeClass( 'itsg_ajax_upload_dropzone' );
  310.                 });
  311.                 var form_id = ajaxupload_input.closest( 'form' ).attr( 'id' ).split( '_' ).pop().trim();
  312.                 itsg_ajaxupload_maybe_restore_buttons( form_id );
  313.             },
  314.             error: function ( request, status, error ) {
  315.                 // upload has stopped
  316.                 var form_id = jQuery( this ).closest( 'form' ).attr( 'id' ).split( '_' ).pop().trim();
  317.                 window[ 'itsg_gf_ajaxupload_uploading_' + form_id ] = false;
  318.  
  319.                 if ( '[object HTMLInputElement]' != error && '[object HTMLImageElement]' != error && '[object Object]' != error && 'abort' != error ) {
  320.                      if ( request.status === 0 ) {
  321.                         error_message = text_error_0;
  322.                     } else if ( request.status == 404 ) {
  323.                         error_message = text_error_404;
  324.                     } else if ( request.status == 500 ) {
  325.                         error_message = text_error_500;
  326.                     } else if ( status === 'parsererror' ) {
  327.                         error_message = text_error_parse;
  328.                     } else if ( status === 'timeout' ) {
  329.                         error_message = text_error_timeout;
  330.                     } else {
  331.                         error_message = text_error_uncaught + request.responseText;
  332.                     }
  333.                     if ( '1' == displayscripterrors ) {
  334.                         alert( text_error_title + '\n\n' + error + '\n\n' + error_message );
  335.                     } else {
  336.                         alert( text_error_title  );
  337.                     }
  338.                     // log error message
  339.                     console.log( text_error_title + ' ' + error + ' ' + error_message );
  340.                 }
  341.             },
  342.             progress: function( e, data ) {
  343.                 // upload has started
  344.                 // console.log(data.bitrate);
  345.                 var form_id = jQuery( this ).closest( 'form' ).attr( 'id' ).split( '_' ).pop().trim();
  346.                 window[ 'itsg_gf_ajaxupload_uploading_' + form_id ] = true;
  347.  
  348.                 // get the form navigation button text values
  349.                 window[ 'itsg_gf_ajaxupload_next_value_' + form_id ] = jQuery( '#gform_' + form_id + ' .gform_next_button:visible' ).attr( 'value' );
  350.                 window[ 'itsg_gf_ajaxupload_previous_value_' + form_id ] = jQuery( '#gform_' + form_id + ' .gform_previous_button:visible' ).attr( 'value' );
  351.                 window[ 'itsg_gf_ajaxupload_submit_value_' + form_id ] = jQuery( '#gform_' + form_id + ' .gform_button[type="submit"]:visible' ).attr( 'value' );
  352.                 window[ 'itsg_gf_ajaxupload_save_value_' + form_id ] = jQuery( '#gform_' + form_id + ' a.gform_save_link:not(.top_button):visible' ).text();
  353.  
  354.                 // replace with 'uploading' placeholeder text
  355.                 jQuery( '#gform_' + form_id + ' .gform_next_button:visible' ).attr( 'value', text_uploading );
  356.                 jQuery( '#gform_' + form_id + ' .gform_previous_button:visible' ).attr( 'value', text_uploading );
  357.                 jQuery( '#gform_' + form_id + ' .gform_button[type="submit"]:visible' ).attr( 'value', text_uploading );
  358.                 jQuery( '#gform_' + form_id + ' a.gform_save_link:not(.top_button):visible' ).text( text_uploading );
  359.  
  360.                 // calculates percentage
  361.                 var progress_percent = parseInt( data.loaded / data.total * 100, 10 );
  362.                 // adds the uploading message to the progress field
  363.                 jQuery( this ).next().children().first().attr( 'aria-valuenow', progress_percent );
  364.                 jQuery( this ).next().children().first().css( 'width', progress_percent + '%' );
  365.                 jQuery( this ).next().children().first().attr( 'aria-valuetext', progress_percent + '% ' + text_complete );
  366.                 jQuery( this ).next().find( 'span.sr-only' ).text( progress_percent + '% ' + text_complete );
  367.                 if ( '100' == progress_percent ) {
  368.                     jQuery( this ).next().addClass( '100' );
  369.                 }
  370.                 i = i + 1;
  371.             },
  372.             fail: function( e, data ) {
  373.                 var ajaxupload_input = jQuery( this );
  374.                 itsg_ajaxupload_restore_input( ajaxupload_input );
  375.             },
  376.         }).on({
  377.             fileuploadsubmit: function( e, data ) {
  378.                 data.formData = {
  379.                     'action': 'itsg_ajaxupload_upload_file',
  380.                     'field_id': jQuery( this ).prev().attr( 'name' ).split( '_' ).pop().trim().replace( '[]', ''),
  381.                     'user_id': user_id,
  382.                     'form_id': jQuery( this ).closest( 'form' ).attr( 'id' ).split( '_' ).pop().trim(),
  383.                     'entry_user_id':entry_user_id
  384.                 };
  385.             }
  386.         });
  387.     });
  388. }
  389.  
  390. function maybePreventDefault( event ) {
  391.     var form_id = event.data.form_id;
  392.     if ( window[ 'itsg_gf_ajaxupload_uploading_' + form_id ] ) {
  393.         jQuery( '.gform_ajax_spinner' ).hide(); // TO DO - fix for multi forms on single page
  394.         event.preventDefault();
  395.     } else {
  396.         return;
  397.     }
  398. }
  399.  
  400. function itsg_gf_ajaxupload_setup_dropzone_function() {
  401.     // disable default behaviour
  402.     jQuery( document ).bind( 'drop dragover', function (e) {
  403.         return false;
  404.     });
  405.  
  406.     // check is browser supports drop and drag file uploads
  407.     var isAdvancedUpload = function() {
  408.         var div = document.createElement('div');
  409.         return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;
  410.     }();
  411.  
  412.     // define drop zone
  413.     var $form = jQuery( '.itsg_ajax_upload_dropzone' );
  414.  
  415.     if ( isAdvancedUpload ) {
  416.         $form.addClass( 'has-advanced-upload' );
  417.     }
  418.  
  419.     if ( isAdvancedUpload ) {
  420.         $form.on( 'dragover dragenter', function() {
  421.             var ajaxupload_input = jQuery( this ).find( 'input.itsg_ajax_upload_browse' );
  422.             if ( typeof( ajaxupload_input.siblings( '.results' ) ) !== 'undefined' && ajaxupload_input.siblings( '.results' ).length < 1 ) {
  423.                 jQuery( this ).addClass( 'is-dragover' );
  424.             }
  425.         })
  426.         .on( 'dragleave dragend drop', function() {
  427.             jQuery( this ).removeClass( 'is-dragover' );
  428.         });
  429.     }
  430. }
  431.  
  432. // when row is added - prepare row upload field, unbind and recreate fileupload
  433. function itsg_gf_ajaxupload_add_list_item( new_row ) {
  434.     jQuery( new_row ).find( 'input.itsg_ajax_upload_browse' ).each( function() {
  435.         var ajaxupload_input = jQuery( this );
  436.         ajaxupload_input.unbind().fileupload();
  437.         ajaxupload_input.fileupload( 'destroy' );
  438.         itsg_ajaxupload_restore_input( ajaxupload_input );
  439.     });
  440.     itsg_gf_ajaxupload_init();
  441. }
  442.  
  443. // when row is removed - run each ajaxupload field through remove function
  444. function itsg_gf_ajaxupload_remove_list_item( row ) {
  445.     jQuery( row ).find( 'input.itsg_ajax_upload_browse' ).each( function() {
  446.         var ajaxupload_input = jQuery( this );
  447.         var ajaxupload_gf_input_value = jQuery( this ).prev().val();
  448.         itsg_ajaxupload_remove_upload( ajaxupload_gf_input_value, ajaxupload_input )
  449.     });
  450. }
  451.  
  452. /* catch all for JavaScript errors */
  453. window.onerror = function( msg, url, linenumber ) {
  454.     // load localized settings
  455.     var text_error = itsg_gf_ajaxupload_js_settings.text_error;
  456.     var text_line_number = itsg_gf_ajaxupload_js_settings.text_line_number;
  457.     var displayscripterrors = itsg_gf_ajaxupload_js_settings.displayscripterrors;
  458.  
  459.     console.log( text_error + ':  ' + msg + ' URL: ' + url + ' ' + text_line_number + ': ' + linenumber );
  460.     if ( '1' == displayscripterrors ) {
  461.         alert( text_error + ': \n' + msg + '\nURL: ' + url + '\n' + text_line_number + ': ' + linenumber );
  462.     }
  463.     return true;
  464. }
  465.  
  466. if ( '1' == itsg_gf_ajaxupload_js_settings.is_entry_detail ) {
  467.     // runs the main function when the page loads -- entry editor -- configures any existing upload fields
  468.     jQuery(document).ready( function($) {
  469.         itsg_gf_ajaxupload_init();
  470.         itsg_gf_ajaxupload_setup_dropzone_function();
  471.         jQuery( 'input.itsg_ajax_upload_browse' ).each( function() {
  472.             var ajaxupload_input = jQuery( this );
  473.             itsg_gf_ajaxupload_display_upload( ajaxupload_input );
  474.         });
  475.  
  476.         // when field is added to repeater, runs the main function passing the current row
  477.         jQuery( '.gfield_list' ).on( 'click', '.add_list_item', function(){
  478.             var new_row = jQuery( this ).parents( 'tr.gfield_list_group, tr.gfield_list_row_even, tr.gfield_list_row_odd' ).next( 'tr.gfield_list_group, tr.gfield_list_row_even, tr.gfield_list_row_odd' );
  479.             itsg_gf_ajaxupload_add_list_item( new_row );
  480.         });
  481.  
  482.     });
  483. } else {
  484.     // runs the main function when the page loads -- front end forms -- configures any existing upload fields
  485.     jQuery( document ).bind( 'gform_post_render', function($) {
  486.         itsg_gf_ajaxupload_init();
  487.         itsg_gf_ajaxupload_setup_dropzone_function();
  488.  
  489.         jQuery( 'input.itsg_ajax_upload_browse' ).each( function() {
  490.             var ajaxupload_input = jQuery( this );
  491.             itsg_gf_ajaxupload_display_upload( ajaxupload_input );
  492.         });
  493.  
  494.         // when field is added to repeater, runs the main function passing the current row
  495.         jQuery( '.gfield_list' ).on( 'click', '.add_list_item', function(){
  496.             var new_row = jQuery( this ).parents( 'tr.gfield_list_group, tr.gfield_list_row_even, tr.gfield_list_row_odd' ).next( 'tr.gfield_list_group, tr.gfield_list_row_even, tr.gfield_list_row_odd' );
  497.             itsg_gf_ajaxupload_add_list_item( new_row );
  498.         });
  499.  
  500.         // stop pages being navigated or form submitted when upload in progress
  501.        
  502.         jQuery( '.gform_wrapper form' ).each(function () {
  503.            
  504.             // get form id
  505.             var form_id = jQuery( this ).attr( 'id' ).split( '_' ).pop().trim();
  506.            
  507.             jQuery( this ).bind( 'submit', { form_id: form_id }, maybePreventDefault );
  508.  
  509.             // get the form navigation button text values
  510.         //  window[ 'itsg_gf_ajaxupload_next_value_' + form_id ] = jQuery( '#gform_' + form_id + ' .gform_next_button' ).first().attr( 'value' );
  511.         //  window[ 'itsg_gf_ajaxupload_previous_value_' + form_id ] = jQuery( '#gform_' + form_id + ' .gform_previous_button' ).first().attr( 'value' );
  512.         //  window[ 'itsg_gf_ajaxupload_submit_value_' + form_id ] = jQuery( '#gform_' + form_id + ' .gform_button[type="submit"]' ).first().attr( 'value' );
  513.         //  window[ 'itsg_gf_ajaxupload_save_value_' + form_id ] = jQuery( '#gform_' + form_id + ' a.gform_save_link:not(.top_button)' ).first().text();
  514.         });
  515.     });
  516. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement