Calculated Fields Form - Version 1.1.81

Version Description

  • Modifies the date/time control.
  • Modifies the DATETIMESUM operation to allow ignoring weekends.
  • Modifies the getField operation.
  • Fixes a conflict with WP Rocket.
  • Modifies the Submissions data-source to allow loading paid submissions only (Developer and Platinum versions).
Download this release

Release Info

Developer codepeople
Plugin Icon 128x128 Calculated Fields Form
Version 1.1.81
Comparing to
See all releases

Code changes from version 1.1.80 to 1.1.81

README.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://cff.dwbooster.com
4
  Tags: form,quote form,contact form,form builder,calculator,calculated,quote calculator,forms,form editor,advanced forms,payment calculator,payment,recurring payment,quote,fields,calculated field,price calculator,email,form design,paypal,equation editor,formula,equation,quote calculator,post,posts,plugin,widget,admin,sidebar,images,image,page,shortcode,products form,woocommerce,addons,layout,session,post,cookie,get,webhook,Dropbox,pdf,language
5
  Requires at least: 3.0.5
6
  Tested up to: 5.9
7
- Stable tag: 1.1.80
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -965,6 +965,14 @@ A: Please, follow the steps below:
965
 
966
  == Changelog ==
967
 
 
 
 
 
 
 
 
 
968
  = 1.1.80 =
969
 
970
  * Modifies the code that formats the equations' results.
@@ -1021,10 +1029,4 @@ A: Please, follow the steps below:
1021
  * Modifies the forms builder design.
1022
  * Modifies the PREC operation to support an additional parameter to return the number without decimal if it is an integer.
1023
  * Modifies the WooCommerce add-on to support signatures in the WooCommerce carts and orders (Developer and Platinum versions).
1024
- * Registering the plugin becomes a MUST (Commercial plugin versions).
1025
-
1026
- = 1.1.71 =
1027
-
1028
- * Fixes an issue with the CDATE operation.
1029
- * Modifies the Gutenberg Block to update the forms list dynamically.
1030
- * Modifies the reCAPTCHA add-on to fix a conflict when the web page loads an additional instance of the reCAPTCHA API.
4
  Tags: form,quote form,contact form,form builder,calculator,calculated,quote calculator,forms,form editor,advanced forms,payment calculator,payment,recurring payment,quote,fields,calculated field,price calculator,email,form design,paypal,equation editor,formula,equation,quote calculator,post,posts,plugin,widget,admin,sidebar,images,image,page,shortcode,products form,woocommerce,addons,layout,session,post,cookie,get,webhook,Dropbox,pdf,language
5
  Requires at least: 3.0.5
6
  Tested up to: 5.9
7
+ Stable tag: 1.1.81
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
965
 
966
  == Changelog ==
967
 
968
+ = 1.1.81 =
969
+
970
+ * Modifies the date/time control.
971
+ * Modifies the DATETIMESUM operation to allow ignoring weekends.
972
+ * Modifies the getField operation.
973
+ * Fixes a conflict with WP Rocket.
974
+ * Modifies the Submissions data-source to allow loading paid submissions only (Developer and Platinum versions).
975
+
976
  = 1.1.80 =
977
 
978
  * Modifies the code that formats the equations' results.
1029
  * Modifies the forms builder design.
1030
  * Modifies the PREC operation to support an additional parameter to return the number without decimal if it is an integer.
1031
  * Modifies the WooCommerce add-on to support signatures in the WooCommerce carts and orders (Developer and Platinum versions).
1032
+ * Registering the plugin becomes a MUST (Commercial plugin versions).
 
 
 
 
 
 
changelog.txt CHANGED
@@ -1,5 +1,13 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
3
  = 1.1.80 =
4
 
5
  * Modifies the code that formats the equations' results.
@@ -488,18 +496,4 @@
488
 
489
  = 1.0.460 =
490
 
491
- * Fixes a typo.
492
-
493
- = 1.0.459 =
494
-
495
- * Includes a new attribute in the calculated fields to indicate the equation's result is a currency and display the negative numbers like -$5.30
496
- * Fixes a compatibility issue with PHP 8.
497
-
498
- = 1.0.458 =
499
-
500
- * Modifies the Summary control to allow hiding the empty fields.
501
- * Improves the errors detection.
502
-
503
- = 1.0.457 =
504
-
505
- * The slider fields can be excluded from submission.
1
  == Changelog ==
2
 
3
+ = 1.1.81 =
4
+
5
+ * Modifies the date/time control.
6
+ * Modifies the DATETIMESUM operation to allow ignoring weekends.
7
+ * Modifies the getField operation.
8
+ * Fixes a conflict with WP Rocket.
9
+ * Modifies the Submissions data-source to allow loading paid submissions only (Developer and Platinum versions).
10
+
11
  = 1.1.80 =
12
 
13
  * Modifies the code that formats the equations' results.
496
 
497
  = 1.0.460 =
498
 
499
+ * Fixes a typo.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cp_calculatedfieldsf_free.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Calculated Fields Form
4
  Plugin URI: https://cff.dwbooster.com
5
  Description: Create forms with field values calculated based in other form field values.
6
- Version: 1.1.80
7
  Text Domain: calculated-fields-form
8
  Author: CodePeople
9
  Author URI: https://cff.dwbooster.com
@@ -16,7 +16,7 @@ if(!defined('WP_DEBUG') || true != WP_DEBUG)
16
  }
17
 
18
  // Defining main constants
19
- define('CP_CALCULATEDFIELDSF_VERSION', '1.1.80' );
20
  define('CP_CALCULATEDFIELDSF_MAIN_FILE_PATH', __FILE__ );
21
  define('CP_CALCULATEDFIELDSF_BASE_PATH', dirname( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
22
  define('CP_CALCULATEDFIELDSF_BASE_NAME', plugin_basename( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
3
  Plugin Name: Calculated Fields Form
4
  Plugin URI: https://cff.dwbooster.com
5
  Description: Create forms with field values calculated based in other form field values.
6
+ Version: 1.1.81
7
  Text Domain: calculated-fields-form
8
  Author: CodePeople
9
  Author URI: https://cff.dwbooster.com
16
  }
17
 
18
  // Defining main constants
19
+ define('CP_CALCULATEDFIELDSF_VERSION', '1.1.81' );
20
  define('CP_CALCULATEDFIELDSF_MAIN_FILE_PATH', __FILE__ );
21
  define('CP_CALCULATEDFIELDSF_BASE_PATH', dirname( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
22
  define('CP_CALCULATEDFIELDSF_BASE_NAME', plugin_basename( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
css/style.css CHANGED
@@ -27,10 +27,11 @@
27
  #fPhone.itemForm::before{content:"\e0cd";}
28
  #fhiddends.itemForm::before,
29
  #fhidden.itemForm::before{content:"\f023";}
 
 
30
 
31
  #frecordsetds.itemForm::before{content:"\ead3";}
32
  #fdatatableds.itemForm::before{content:"\e3ec";}
33
- #fdate.itemForm::before{content:"\e935";}
34
  #fSectionBreak.itemForm::before{content:"\e22c";}
35
  #fPageBreak.itemForm::before{content:"\eaca";}
36
  #fsummary.itemForm::before{content:"\e949";}
27
  #fPhone.itemForm::before{content:"\e0cd";}
28
  #fhiddends.itemForm::before,
29
  #fhidden.itemForm::before{content:"\f023";}
30
+ #fdateds.itemForm::before,
31
+ #fdate.itemForm::before{content:"\e935";}
32
 
33
  #frecordsetds.itemForm::before{content:"\ead3";}
34
  #fdatatableds.itemForm::before{content:"\e3ec";}
 
35
  #fSectionBreak.itemForm::before{content:"\e22c";}
36
  #fPageBreak.itemForm::before{content:"\eaca";}
37
  #fsummary.itemForm::before{content:"\e949";}
js/fbuilder-pro-admin.jquery.js CHANGED
@@ -1042,7 +1042,8 @@
1042
  $.fbuilder.reloadItems( {'field': e.data.obj} );
1043
  });
1044
 
1045
- $(".helpfbuilder").click(function()
 
1046
  {
1047
  alert($(this).attr("text"));
1048
  });
1042
  $.fbuilder.reloadItems( {'field': e.data.obj} );
1043
  });
1044
 
1045
+ $(".helpfbuilder").unbind('click');
1046
+ $(".helpfbuilder").bind('click', function()
1047
  {
1048
  alert($(this).attr("text"));
1049
  });
js/fbuilder-pro-public.jquery.js CHANGED
@@ -1,4 +1,4 @@
1
- $.fbuilder['version'] = '1.1.80';
2
  $.fbuilder['controls'] = $.fbuilder['controls'] || {};
3
  $.fbuilder['forms'] = $.fbuilder['forms'] || {};
4
 
@@ -470,6 +470,8 @@
470
  for (var i=0;i<items.length;i++)
471
  {
472
  items[i].after_show();
 
 
473
  }
474
 
475
  $(document).on(
1
+ $.fbuilder['version'] = '1.1.81';
2
  $.fbuilder['controls'] = $.fbuilder['controls'] || {};
3
  $.fbuilder['forms'] = $.fbuilder['forms'] || {};
4
 
470
  for (var i=0;i<items.length;i++)
471
  {
472
  items[i].after_show();
473
+ if('csslayout' in items[i] && /\bignorefield\b/i.test(items[i]['csslayout']))
474
+ IGNOREFIELD(items[i].name, items[i].form_identifier);
475
  }
476
 
477
  $(document).on(
js/fields-public/04_fbuilder.fdate.js CHANGED
@@ -56,16 +56,18 @@
56
  {
57
  var me = this,
58
  f = function(){
59
- $( '#'+me.name+'_date' ).valid();
60
  me.set_dateTime();
 
61
  };
62
 
63
- $( document ).on( 'change', '#'+me.name+'_date', function(){ f(); } );
64
- $( document ).on( 'change', '#'+me.name+'_hours', function(){ f(); } );
65
- $( document ).on( 'change', '#'+me.name+'_minutes', function(){ f(); } );
66
- $( document ).on( 'change', '#'+me.name+'_ampm', function(){ f(); } );
67
 
68
- $( '#cp_calculatedfieldsf_pform'+me.form_identifier ).bind( 'reset', function(){ setTimeout( function(){ me.set_DefaultDate(true); me.set_DefaultTime(); me.set_dateTime(); }, 500 ); } );
 
 
69
  },
70
  _validateDate: function(d)
71
  {
56
  {
57
  var me = this,
58
  f = function(){
 
59
  me.set_dateTime();
60
+ $( '#'+me.name+'_date' ).valid();
61
  };
62
 
63
+ $(document).off('change', '#'+me.name+'_date').on('change', '#'+me.name+'_date', function(){f();});
64
+ $(document).off('change', '#'+me.name+'_hours').on('change', '#'+me.name+'_hours', function(){f();});
65
+ $(document).off('change', '#'+me.name+'_minutes').on('change', '#'+me.name+'_minutes', function(){f();});
66
+ $(document).off('change', '#'+me.name+'_ampm').on('change', '#'+me.name+'_ampm', function(){f();});
67
 
68
+ $('#cp_calculatedfieldsf_pform'+me.form_identifier).bind('reset', function(){
69
+ setTimeout( function(){me.set_DefaultDate(true); me.set_DefaultTime(); me.set_dateTime();},500);
70
+ });
71
  },
72
  _validateDate: function(d)
73
  {
js/modules/02_datetime/admin/module_admin.js CHANGED
@@ -21,7 +21,7 @@ fbuilderjQuery[ 'fbuilder' ][ 'modules' ][ 'datetime' ] = {
21
  { "value" : "TODAY", "code" : "TODAY(", "tip" : "<p>Get a date object with the current day information, without the time part. <strong>TODAY()</strong></p>" },
22
  { "value" : "EOMONTH", "code" : "EOMONTH(", "tip" : "<p>Get the last day of the month. <strong>EOMONTH(date_obj, number)</strong> where the number parameter is optional.</p><p><strong>EOMONTH(DATEOBJ(&quot;2021-03-04&quot;))</strong> Result: <strong>Mar 31 2021</strong></p><p><strong>EOMONTH(DATEOBJ(&quot;2021-03-04&quot;), 4)</strong> Result: <strong>Jul 31 2021</strong></p><p><strong>EOMONTH(DATEOBJ(&quot;2021-03-04&quot;), -3)</strong> Result: <strong>Dec 31 2020</strong></p>" },
23
  { "value" : "DATEDIFF", "code" : "DATEDIFF(", "tip" : "<p>Get the difference between two dates strings representation</p><p><strong>DATEDIFF(date_one, date_two, date_format, return)</strong></p><p>The function return an object, whose value depends of argument &quot;return&quot;</p><p>Possible values of return argument:<br />d - return the number of days between two dates<br />m - return the number of months between two dates, and remaining days<br />y - return the number of years between two dates, remaining months, and remaining days</p><p><strong>DATEDIFF(&quot;2013-10-27&quot;, &quot;2012-06-22&quot;, &quot;yyyy-mm-dd&quot;, &quot;y&quot;)[&quot;months&quot;]</strong><p><p>Result:<strong> 5 </strong></p>" },
24
- { "value" : "DATETIMESUM", "code" : "DATETIMESUM(", "tip" : "<p>Increases the date-time string representation in the number of seconds, minutes, hours, days, months, or years, passed as parameter.</p><p><strong>DATETIMESUM( date_string, format, number, to_increase )</strong></p><p>DATETIMESUM(&quot;2013-10-27&quot;, &quot;yyyy-mm-dd&quot;, 5, &quot;d&quot;)</p><p>Result: <strong>The date object representation of 2013/11/01</strong></p>" },
25
  { "value" : "DECIMALTOTIME", "code" : "DECIMALTOTIME(", "tip" : "<p>Converts a decimal number to a time format text. The operation requires three parameters, the decimal number, character indicating the decimal representation (&quot;y&quot; for years, &quot;m&quot; for months, &quot;d&quot; for days, &quot;h&quot; for hours, &quot;i&quot; for minutes, and &quot;s&quot; for seconds), text for time format (&quot;h:i:s&quot;).</p><p><strong>DECIMALTOTIME( decimal, format, time format )</strong></p><p>DECIMALTOTIME(938405,&quot;s&quot;,&quot;d days, h hours, i minutes, and s seconds&quot;)</p><p>Result: <strong>10 days, 20 hours, 40 minutes, and 5 seconds</strong></p>" },
26
  { "value" : "TIMETODECIMAL", "code" : "TIMETODECIMAL(", "tip" : "<p>Converts a time text to a decimal number. The operation requires three parameters, the text with time representation, the time format representation (&quot;h:i:d&quot;), character with the output format (&quot;y&quot; for years, &quot;m&quot; for months, &quot;d&quot; for days, &quot;h&quot; for hours, &quot;i&quot; for minutes, and &quot;s&quot; for seconds).</p><p><strong>TIMETODECIMAL( time text, time format, output format )</strong></p><p>TIMETODECIMAL(&quot;20:40:5&quot;,&quot;h:i:s&quot;,&quot;s&quot;)</p><p>Result: <strong>74405</strong></p>" },
27
  { "value" : "GETDATETIMESTRING", "code" : "GETDATETIMESTRING(", "tip" : "<p>Returns the string representation of a date object</p><p><strong>GETDATETIMESTRING( datetime_object, format )</strong></p><p><strong>GETDATETIMESTRING(TODAY(), &quot;yyyy-mm-dd&quot;)</strong></p><p>Result: <strong>2013-10-27</strong></p>" }
21
  { "value" : "TODAY", "code" : "TODAY(", "tip" : "<p>Get a date object with the current day information, without the time part. <strong>TODAY()</strong></p>" },
22
  { "value" : "EOMONTH", "code" : "EOMONTH(", "tip" : "<p>Get the last day of the month. <strong>EOMONTH(date_obj, number)</strong> where the number parameter is optional.</p><p><strong>EOMONTH(DATEOBJ(&quot;2021-03-04&quot;))</strong> Result: <strong>Mar 31 2021</strong></p><p><strong>EOMONTH(DATEOBJ(&quot;2021-03-04&quot;), 4)</strong> Result: <strong>Jul 31 2021</strong></p><p><strong>EOMONTH(DATEOBJ(&quot;2021-03-04&quot;), -3)</strong> Result: <strong>Dec 31 2020</strong></p>" },
23
  { "value" : "DATEDIFF", "code" : "DATEDIFF(", "tip" : "<p>Get the difference between two dates strings representation</p><p><strong>DATEDIFF(date_one, date_two, date_format, return)</strong></p><p>The function return an object, whose value depends of argument &quot;return&quot;</p><p>Possible values of return argument:<br />d - return the number of days between two dates<br />m - return the number of months between two dates, and remaining days<br />y - return the number of years between two dates, remaining months, and remaining days</p><p><strong>DATEDIFF(&quot;2013-10-27&quot;, &quot;2012-06-22&quot;, &quot;yyyy-mm-dd&quot;, &quot;y&quot;)[&quot;months&quot;]</strong><p><p>Result:<strong> 5 </strong></p>" },
24
+ { "value" : "DATETIMESUM", "code" : "DATETIMESUM(", "tip" : "<p>Increases the date-time string representation in the number of seconds, minutes, hours, days, months, or years, passed as parameter.</p><p><strong>DATETIMESUM( date_string, format, number, to_increase, ignore_weekend )</strong></p><p>ignore_weekend is an optional parameter that applies only to days sum. It ignores Saturdays and Sundays.</p><p>DATETIMESUM(&quot;2013-10-27&quot;, &quot;yyyy-mm-dd&quot;, 5, &quot;d&quot;)</p><p>Result: <strong>The date object representation of 2013/11/01</strong></p>" },
25
  { "value" : "DECIMALTOTIME", "code" : "DECIMALTOTIME(", "tip" : "<p>Converts a decimal number to a time format text. The operation requires three parameters, the decimal number, character indicating the decimal representation (&quot;y&quot; for years, &quot;m&quot; for months, &quot;d&quot; for days, &quot;h&quot; for hours, &quot;i&quot; for minutes, and &quot;s&quot; for seconds), text for time format (&quot;h:i:s&quot;).</p><p><strong>DECIMALTOTIME( decimal, format, time format )</strong></p><p>DECIMALTOTIME(938405,&quot;s&quot;,&quot;d days, h hours, i minutes, and s seconds&quot;)</p><p>Result: <strong>10 days, 20 hours, 40 minutes, and 5 seconds</strong></p>" },
26
  { "value" : "TIMETODECIMAL", "code" : "TIMETODECIMAL(", "tip" : "<p>Converts a time text to a decimal number. The operation requires three parameters, the text with time representation, the time format representation (&quot;h:i:d&quot;), character with the output format (&quot;y&quot; for years, &quot;m&quot; for months, &quot;d&quot; for days, &quot;h&quot; for hours, &quot;i&quot; for minutes, and &quot;s&quot; for seconds).</p><p><strong>TIMETODECIMAL( time text, time format, output format )</strong></p><p>TIMETODECIMAL(&quot;20:40:5&quot;,&quot;h:i:s&quot;,&quot;s&quot;)</p><p>Result: <strong>74405</strong></p>" },
27
  { "value" : "GETDATETIMESTRING", "code" : "GETDATETIMESTRING(", "tip" : "<p>Returns the string representation of a date object</p><p><strong>GETDATETIMESTRING( datetime_object, format )</strong></p><p><strong>GETDATETIMESTRING(TODAY(), &quot;yyyy-mm-dd&quot;)</strong></p><p>Result: <strong>2013-10-27</strong></p>" }
js/modules/02_datetime/public/01_datetime.js CHANGED
@@ -252,7 +252,7 @@
252
  };
253
 
254
  /*
255
- * DATETIMESUM( datetime_string, format, number, to_increase )
256
  * to_increase:
257
  * s - seconds
258
  * i - minutes
@@ -262,8 +262,9 @@
262
  * y - add the number of years
263
  *
264
  */
265
- lib.DATETIMESUM = function( date, format, number, to_increase){
266
  var d = _getDateObj( date, format );
 
267
  if( d.valid() ){
268
  if( typeof number != 'number' && isNaN( parseFloat( number ) ) ) number = 0;
269
  else number = parseFloat( number );
@@ -272,7 +273,19 @@
272
 
273
 
274
  if( /y+/i.test( to_increase ) ) d.setFullYear( d.getFullYear() + number );
275
- else if( /d+/i.test( to_increase ) ) d.setDate( d.getDate() + number );
 
 
 
 
 
 
 
 
 
 
 
 
276
  else if( /m+/i.test( to_increase ) ){
277
  var tmp = DAY(d)
278
  d.setDate(1);
252
  };
253
 
254
  /*
255
+ * DATETIMESUM( datetime_string, format, number, to_increase, ignore_weekend )
256
  * to_increase:
257
  * s - seconds
258
  * i - minutes
262
  * y - add the number of years
263
  *
264
  */
265
+ lib.DATETIMESUM = function( date, format, number, to_increase, ignore_weekend){
266
  var d = _getDateObj( date, format );
267
+ ignore_weekend = ignore_weekend || false;
268
  if( d.valid() ){
269
  if( typeof number != 'number' && isNaN( parseFloat( number ) ) ) number = 0;
270
  else number = parseFloat( number );
273
 
274
 
275
  if( /y+/i.test( to_increase ) ) d.setFullYear( d.getFullYear() + number );
276
+ else if( /d+/i.test( to_increase ) ){
277
+ if(ignore_weekend)
278
+ {
279
+ var n = number < 0 ? Math.ceil(number) : Math.floor(number),
280
+ s = number < 0 ? -1 : 1;
281
+ while(n)
282
+ {
283
+ d.setDate(d.getDate()+s);
284
+ if(0 < d.getDay() && d.getDay() < 6) n -= s;
285
+ }
286
+ }
287
+ else d.setDate( d.getDate() + number );
288
+ }
289
  else if( /m+/i.test( to_increase ) ){
290
  var tmp = DAY(d)
291
  d.setDate(1);
js/modules/05_managing_fields/public/05_managing_fields.js CHANGED
@@ -25,7 +25,27 @@
25
 
26
  function _getField( _field, _form )
27
  {
28
- return $.fbuilder['forms'][_getForm(_form)].getItem(_field);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  }
30
 
31
  /*** PUBLIC FUNCTIONS ***/
@@ -40,6 +60,7 @@
40
  if(f)
41
  {
42
  j = f.jQueryRef();
 
43
  if(j.find('[id*="'+f.name+'"]').hasClass('ignore'))
44
  {
45
  j.add(j.find('.fields')).show();
@@ -57,6 +78,7 @@
57
  if(f)
58
  {
59
  j = f.jQueryRef();
 
60
  if(!j.find('[id*="'+f.name+'"]').hasClass('ignore'))
61
  {
62
  j.add(j.find('.fields')).hide();
25
 
26
  function _getField( _field, _form )
27
  {
28
+ try
29
+ {
30
+ if(typeof _field == 'undefined') return false;
31
+ if(typeof _field == 'object')
32
+ {
33
+ if('ftype' in _field) return _field;
34
+ if('jquery' in _field)
35
+ {
36
+ if(_field.length) _field = _field[0];
37
+ else return false;
38
+ }
39
+
40
+ if('getAttribute' in _field)
41
+ {
42
+ _form = $(_field).closest('form');
43
+ _field = _field.getAttribute('class').match(/fieldname\d+/)[0];
44
+ }
45
+ else return false;
46
+ }
47
+ return $.fbuilder['forms'][_getForm(_form)].getItem(_field);
48
+ } catch (err) { return false; }
49
  }
50
 
51
  /*** PUBLIC FUNCTIONS ***/
60
  if(f)
61
  {
62
  j = f.jQueryRef();
63
+ j.removeClass('ignorefield');
64
  if(j.find('[id*="'+f.name+'"]').hasClass('ignore'))
65
  {
66
  j.add(j.find('.fields')).show();
78
  if(f)
79
  {
80
  j = f.jQueryRef();
81
+ j.addClass('ignorefield');
82
  if(!j.find('[id*="'+f.name+'"]').hasClass('ignore'))
83
  {
84
  j.add(j.find('.fields')).hide();