Calculated Fields Form - Version 1.0.463

Version Description

  • Fixes a conflict with the latest update of Divi.
Download this release

Release Info

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

Code changes from version 1.0.449 to 1.0.463

README.txt CHANGED
@@ -3,52 +3,26 @@ Contributors: codepeople
3
  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.7
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- Calculated Fields Form is a plugin for creating forms with dynamically calculated fields and display the result.
12
 
13
  == Description ==
14
 
15
- Calculated Fields Form is for visually:
16
 
17
- Creating forms with automatically calculated fields
18
- ♦ Finance calculators
19
- ♦ Quote calculators
20
- ♦ Booking cost calculators
21
- ♦ Date calculators
22
- ♦ Health / fitness calculators
23
- ♦ Form builder for adding input fields on the form
24
- ♦ Add one or more calculated fields
25
- ♦ Predefined forms templates
26
 
27
- With Calculated Fields Form you can create **forms with dynamically calculated fields** to **display the calculated values**.
28
 
29
- It includes a **form builder** for adding/editing different field types, including one or more **automatically calculated fields** based in the data entered in other fields.
30
 
31
- Calculated Fields Form can be used for creating both single and complex calculations, for example general calculators, ideal weight calculators, calorie calculators, calculate quotes for hotel booking and rent a car services, calculate quotes for appointments and services, loan & finance calculators, date calculators like pregnancy calculators, etc...
32
 
33
- = Features: =
34
-
35
- * Visual **form builder** with multiple fields and form formatting options
36
- * Any number of **calculated fields** can be added
37
- * Easy and visual calculator interface
38
- * The calculator supports both easy and advanced operations, including ternary operators and common Math functions
39
- * Supports **multiple field types**, like drop-down, checkboxes, radiobuttons, dates, numbers
40
- * Accept operations with dates (ex: days between two dates)
41
- * Smart automatic number and prices identification into the field values
42
- * Supports form separators and comments sections to layout the form in a friendlier way
43
- * Manage multiple calculated forms
44
- * Practical "clone" button to duplicate a form
45
- * Five pre-built practical samples included
46
- * Multi pages forms supported
47
- * Conditional rules supported. Useful for creating wizards
48
- * Intuitive and interactive form builder interface
49
- * Predefined forms templates
50
-
51
- The "Calculated Fields Form" plugin allows the specific integration with the following editors:
52
 
53
  * Classic WordPress Editor.
54
  * Gutenberg Editor.
@@ -57,21 +31,35 @@ The "Calculated Fields Form" plugin allows the specific integration with the fol
57
  * Beaver Builder.
58
  * WPBakery Page Builder.
59
  * DIVI Builder.
60
- * For other editors, the shortcodes should be inserted using other controls of general purpose, like the controls for inserting HTML or shortcodes.
61
 
62
- = Latest Features Added =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
- * Dependent fields: Fields can be shown/hidden based on other checkboxes, radiobuttons or drop-down selections
65
- * Dependent fields from calculated values: Fields can be shown/hidden based on the value of a calculated field
66
- * Throubleshoot area to automatically fix conflicts with other scripts on themes or third party plugins and also for special characters support
67
- * Multi page calculated forms
68
- * New validations, fields types and features in the form builder
69
- * Calculated fields can be hidden fields.
70
- * Includes new controls to create more versatile forms.
71
- * Allows to create a cache of the javascript files to increase the website's performance.
72
- * Allows to disable the forms when the website is visited by search engine spiders and crawlers, increasing the website's speed.
73
 
74
- There are five samples already included with the installation:
 
 
 
 
 
 
 
75
 
76
  1. Simple Calculator Operations
77
  2. Calculation with Dates (bookings with check-in and check-out dates)
@@ -79,138 +67,149 @@ There are five samples already included with the installation:
79
  4. Pregnancy Calculator
80
  5. Lease Calculator
81
 
82
- You can either "**clone**" those calculated forms to complete your own form or create a new calculated form from scratch for your application.
83
-
84
- You can **mix text and numbers** into a field. If a field contains a number it will be automatically identified and used for the calculations. In addition to that, the checkboxes, radio buttons and drop-down fields can have separately a visual "text" and a hidden "value" linked to each test: the value will be the one used for the calculation.
85
 
86
- The dates are also automatically identified and you can apply operations between them, for example, you can calculate the **number of days between two dates** with a simple operation like "date2-date1" or add some number of days or weeks to a date. To display the result as a date again you can use the CDate operator included in the calculator. The samples #2 and #4 are practical samples.
 
87
 
88
- The form processing and payment processing aren't included in this version. There are other versions with form processing included and additional features. See the FAQ for more information.
89
 
90
- The plugin has two additional (commercial) versions: **Premium** and **Developer**, each of them with its own features:
 
 
 
 
 
 
 
 
 
 
91
 
92
- = Features in Premium version: =
93
 
94
- * All features of free version of plugin
95
- * Submits the form data, and stores the data on database, for future review
96
- * Allows send notification emails with the data submitted, to the form editor and users
97
- * Allows charge the calculated field directly through PayPal
98
- * Payments are SCA ready (Strong Customer Authentication), compatible with the new Payment services (PSD 2) - Directive (EU)
99
- * Allows export and import your forms between different WordPress
100
- * Allows to display the submitted data in the thanks page
101
- * Includes a dashboard widget to display the submissions of the last week
102
- * Allows to store the forms in cache to increase the rendering speed
103
 
104
- = Features in Developer version: =
105
 
106
- * All features of free and premium version of plugin
107
- * Includes new controls that get its information from different datasources (database, CSV file, Post, Taxonomies, and users data)
108
- * Includes financial operations
109
- * Includes operations for date times management
110
- * Includes the "distance" operation, that integrates the plugin with "Google Maps" to get the distance between two addresses
111
- * Includes the Chart.js module to integrate ChartJS in the form
112
- * Includes a script for saving the submitted data in an external database
113
- * Includes an add-on to define Server Side Equations.
114
- * Includes an add-on to integrate the forms with the WooCommerce products
115
- * Includes an add-on to integrate the forms with the SalesForce service
116
- * Includes an add-on to post the submitted information by the forms to WebHooks URLs, allowing integrate the forms with services like Zapier, or Microsoft Flow. Both services: Zapier and Microsoft Flow, connect services as important and popular as Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services
117
- * Includes an add-on to associate the information submitted with the users on website
118
- * Includes the User Registration Form add-on to register new users in the website with the data collected by the form
119
- * Includes an add-on to integrate the forms with Google reCAPTCHA, instead the captcha distributed with the plugin
120
 
121
- = Features in Platinum version: =
122
 
123
  * All features of free, premium, and developer versions of the plugin.
124
- * Includes an add-on to integrate the forms with the Easy Digital Downloads products
125
- * Includes the Google Analytics add-on to generate reports about the usage of forms, to identify the users actions and behaviors.
126
- * Includes the PayPal Pro add-on to ask for the credit card details of payers and charge it directly into your website without any redirection through the PayPal website.
127
- * Includes the Upload Files add-on to integrate the uploaded files in the website library, and add new mime types to WordPress.
128
- * Includes the DropBox Integration add-on to copy or move the uploaded files to a DropBox account.
129
- * Includes the ip2location add-on to identify the users data from the ip2location databases. Requires PHP 5.3 and over.
130
- * Includes the "Google Places" add-on that allows integrate the input fields with the Google Places API to autocomplete the addresses entered by the users.
131
- * Includes the "Autocomplete Places" add-on that allows integrate the input fields with the Photon API to autocomplete the addresses entered by the users.
132
- * Includes the "Signature" add-on to convert some form fields in "Signature" fields, allowing the users to sign with the mouse or directly in the touchscreens.
133
- * Includes the "iCal" add-on for sending the users an iCal file as part of the confirmation email after the form submission to be imported into most popular calendars like Outlook and Google Calendar.
134
- * Includes the "CSV Generator" add-on that allows to export dynamically the information collected by the form to a CSV file, and send it as attachment in the notification emails.
135
- * Includes the "PDF Generator" add-on that allows to generate PDF files with the information collected by the forms, and send them as attachment of notification emails.
136
- * Includes the "WebMerge" add-on to integrate the forms with the WebMerge Service (FormStack documents), and generate PDF and Office documents at runtime with the information collected by the forms.
137
- * Includes the "PrintFriendly" add-on to integrate the forms with the PrintFriendly API for generating PDF files after forms submissions, and attach the resulting files to the notification emails.
138
- * Includes the "MailChimp" add-on to add new members to the MailChimp Service using the data collected by the form.
139
- * Includes the "Mautic" add-on to add new contacts (or update the existent ones) into the Mautic Service, using the information collected by the form.
140
- * Includes the "HubSpot" add-on to creates/updatess contacts in HubSpot, using the information collected by the form.
141
- * Includes the "Emma" add-on to add new members to the Emma Service using the data collected by the form.
142
- * Includes the "Twilio" add-on for sending notification messages (SMS) when the forms are submitted.
143
- * Includes the "MailPoet" add-on to add new subscribers to the MailPoet's Mailing Lists (Both versions, MailPoet 2 and MailPoet 3).
144
- * Includes the "AffiliateWP" add-on to integrate the forms with the AffiliateWP plugin.
145
- * Authorize.Net add-on integrate the forms with the Authorize.Net payment gateway.
146
- * Stripe add-on integrate the forms with the Stripe payment gateway.
147
- * Skrill Payments Integration provides integration with Skrill Moneybookers payment gateway.
148
- * TargetPay (iDeal) add-on provides integration with iDeal, the most popular Dutch payment method.
149
- * Mollie (iDeal) add-on provides integration with iDeal.
150
- * RedSys / Servired / Sermepa add-on provides a secure interface for accepting credit card payments through most banks in Spain.
151
- * PayTM add-on provides a secure interface for accepting payments through credit card, debir cards, net banking, wallet and EMI.
152
- * SagePay add-on provides a secure interface for accepting payments through SagePay.
153
- * Sage Payment add-on provides a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
154
-
155
- To know when the plugin is updated, if you are using the free version, WordPress will let you know by default every time the plugin is update in its directory. But for the commercial versions, would be required to register your copy of the plugin. Please, visit the following link to know how should be registered the plugin: [CLICK HERE](https://cff.dwbooster.com/documentation#register "Registering the plugin")
 
156
 
157
  == Other Notes ==
158
 
159
- This section contains mainly notes about the form builder features that are too long to explain in the main description page.
160
 
161
- = Conditional Rules =
 
 
162
 
163
- The form fields can be shown or hidden depending of the selection made on checkboxes, radio-buttons, select/drop-down, and calcualted fields.
164
 
165
- [Description about the use of dependencies](http://cff.dwbooster.com/features/dependant-fields "Description about the use of dependencies")
166
 
167
- = Predefined value =
168
 
169
- The fields can have "predefined" or "prefilled" values. There are two possible uses for this:
170
 
171
- 1- Can be used for pre-filling the form with common values and save time to the end user.
172
 
173
- 2- Can be used for showing a sample of the data that should be entered in the field. In this case you may want to mark also the checkbox "Hide predefined value on click", this way the value will disappear once the user starts using the field without having to manually delete the placeholder value.
174
 
 
175
 
176
- = The "Instructions for User" option =
177
 
178
- Each field has a settings value labeled "Instructions for User". Use that settings value to put instructions to the end user about filling that field. The instructions will appear in a smaller text immediately below the field in the public website.
179
 
180
- = Add Css Layout Keywords =
181
 
182
- This is also explained in the FAQ. The "Add Css Layout Keywords" is a way to apply CSS styles separately for each field. This settings field is available for each form builder field in the admin area. Into that field you can put the name of a CSS class that will be applied to the field.
183
 
184
- Important: Put only the name of the CSS class into the "Add Css Layout Keywords"; don't put the css styles rules directly there.
185
 
186
- There are some pre-defined CSS classes to use align two, three or four fields into the same line. The CSS classes are named:
 
 
 
 
 
 
 
 
187
 
188
  column2
189
  column3
190
  column4
191
 
192
- For example if you want to put two fields into the same line then specify for both fields the class name "column2". The above is valid for both the classic fields and the calculated fields.
193
-
194
- The CSS classes/rules can be placed into the file "wp-content\plugins\calculated-fields-form\css\stylepublic.css" or into your theme CSS files.
195
 
 
196
 
197
- = Multi Page Forms =
198
 
199
- For adding a new page to create multi-page forms just insert the field named "Page Break". Each form's page will be validated separately before going to the next form, however note that the calculations are applied to the whole form every time a field is modified, so a calculated field in other page may be modified even if that page isn't visible.
200
 
 
201
 
202
- = Calculated "hidden" Fields =
203
 
204
- The calculated fields can be "hidden" fields. This way the calculated values of those "hidden" fields won't be displayed in the form. This is useful for using intermediate calculated values or for showing the calculated values only into the email (pro version).
205
 
 
206
 
207
- = Equations / formulas Format for Calculated Fields =
208
 
209
- Here are some sample formulas that can be used as base:
210
 
211
  * With simple mathematical operations:
212
 
213
-
214
  `fieldname1 + fieldname2`
215
 
216
  `fieldname1 * fieldname2`
@@ -219,360 +218,368 @@ Here are some sample formulas that can be used as base:
219
 
220
  `fieldname1 - fieldname2`
221
 
 
222
 
 
223
 
224
- * With multiple fields and fields grouping included:
225
 
 
226
 
227
- `fieldname1 * ( fieldname2 + fieldname3 )`
228
 
 
229
 
 
 
 
 
230
 
231
- * Rounded to two decimal digits:
232
 
 
 
 
 
 
233
 
234
- `prec( fieldname2 / fieldname3 , 2)`
235
 
 
236
 
 
237
 
238
- * There is a huge number of equations that can't be recreated with simple mathematical operators, or the operations listed above, requiring "IF" conditions, here is a sample of the formula that can be used in that case:
239
 
240
- `(function(){`
241
- ` if(fieldname3 > 100) return fieldname1+fieldname2;`
242
- ` if(fieldname3 <= 100) return fieldname1*fieldname2;`
243
- `})();`
244
 
 
245
 
246
- * For complex equations where is required to define blocks of JavaScript code, you should use the following format:
247
 
248
- `
249
- (function(){`
250
- ` var calculatedValue = 0;`
251
- ` //Your code here`
252
- ` return calculatedValue;`
253
- `})();`
254
 
 
255
 
256
- .... and note that the **return** value of that function will be the value assigned to the calculated field.
257
 
 
258
 
259
- = Functions that can be used for the formulas =
260
 
261
- In addition to the JavaScript functions, the following functions can be used directly into the formulas:
262
 
263
- [Description of basic operations](http://cff.dwbooster.com/documentation#mathematical-module "Description of basic operations")
264
 
265
- In addition to the above, the following operations that are available in the **Developer** and **Platinum** versions of plugin:
266
 
267
- **Date Time module**
268
 
269
- [Description of operations in the module Date Time](http://cff.dwbooster.com/documentation#datetime-module "Description of operations in the module Date Time")
270
 
271
- **Financial Module**
272
 
273
- [Description of operations in the financial module](http://cff.dwbooster.com/documentation#financial-module "Description of operations in the financial module")
274
 
275
- **Distance Module**
276
 
277
- [Description of operations in the distance module](http://cff.dwbooster.com/documentation#distance-module "Description of operations in the distance module")
278
 
279
- **Chart.js Module**
280
 
281
- [Description of operations in the Chart.js module](http://cff.dwbooster.com/documentation#chart-module "Description of operations in the Chart.js module")
282
 
283
- = Fields available in the Calculated Fields Form's form builder =
284
 
285
- To get the complete list of available fields, please visit the following link: [CLICK HERE](http://cff.dwbooster.com/documentation#common-fields "Available fields")
286
 
287
- = Create JavaScript variables to be used in the equations, from GET, or POST parameters, SESSION variables, or COOKIES =
288
 
289
- The icon with the "X" symbol, that appears when editing the contents of pages or posts, inserts a shortcode in the content with the structure:
290
 
291
- `[CP_CALCULATED_FIELDS_VAR name="..."]`
292
 
293
- The ... symbol should be replaced by the parameter or variable name, and will be the same name of the javascript variable. For example:
 
 
 
 
294
 
295
- `[CP_CALCULATED_FIELDS_VAR name="varname"]`
296
 
297
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#javascript-variables "Create JavaScript Variables")
298
 
299
- = Tips for calculating prices =
300
 
301
- One of the most frequent uses is for calculating prices. When displaying prices a good you may want to divide the form in two pages, the first one for asking the information needed to calculate the price and in a second page display the calculated field with the price and using the "Instruct. Text" fields for adding the terms, conditions and valid time for the price.
302
 
303
- Note that you can make the "Instruct. Text" fields dependent from the calculated value, that way you can change the text shown to the user depending of the number shown in the calculated price, since frequently the terms, conditions or offers vary according to the price amount.
304
 
305
- = Add-Ons - Only available in the Developer and Platinum versions of the plugin =
306
 
307
- The list of add-ons available in the plugin, appear in the "Add-ons area" of settings page of the plugin. For enabling the add-ons, simply should tick the corresponding checkboxes, and press the "Activate/Deactivate Addons" button.
308
 
309
- = Server Side Equations add-on - Only available in the Developer and Platinum versions of the plugin =
310
 
311
- The developer and platinum versions of the plugin include the Server Side Equations add-on, to define the equations with PHP in the server side. The equations are called with AJAX.
312
 
313
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#server-side-equations-addon "Server Side Equations add-on")
314
 
315
- = WooCommerce add-on - Only available in the Developer and Platinum versions of the plugin =
316
 
317
- The developer and platinum versions of the plugin include the WooCommerce add-on, to integrate the forms created by the "Calculated Fields Form" with the WooCommerce products.
318
 
319
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#woocommerce-addon "WooCommerce add-on")
320
 
321
- = Easy Digital Downloads add-on - Only available in the Platinum version of the plugin =
322
 
323
- The Platinum version of the plugin includes the Easy Digital Downloads add-on, to integrate the forms created by the "Calculated Fields Form" with the EDD products.
324
 
325
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#edd-addon "Easy Digital Downloads add-on")
326
 
327
- = SalesForce add-on - Only available in the Developer and Platinum versions of the plugin =
328
 
329
- The add-on allows create new leads in the SalesForce account with the data submitted by the forms.
330
 
331
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#salesforce-addon "SalesForce add-on")
332
 
333
- = WebHook add-on - Only available in the Developer and Platinum versions of the plugin =
334
 
335
- The add-on allows posting the submitted information by the forms to WebHooks URLs. With the WebHook add-on it is possible integrate the forms created by the plugin with services like Zapier, Microsoft Flow, or IFTTT (between others). Services like: Zapier, Microsoft Flow and IFTTT, connect services as important and popular as Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services [https://zapier.com/zapbook/apps/](https://zapier.com/zapbook/apps/ "Zapier"), [https://flow.microsoft.com/](https://flow.microsoft.com/ "Microsoft Flow"), [https://ifttt.com/discover](https://ifttt.com/discover "IFTTT")
336
 
337
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#webhook-addon "WebHook add-on")
338
 
339
- = Users Permissions add-on - Only available in the Developer and Platinum versions of the plugin =
340
 
341
- The add-on allows associate the submitted information with the users on website. Furthermore, the plugin allows define rules to restrict the access to the forms to: only registered users, specific roles, or specific users. The add-on adds a new shortcode to the plugin for listing the information submitted by user (it is possible inserting the new shortcode in the user profile), and assign to the users, permissions for editing the submitted information, or delete an entry. With the add-on it is possible limit the number of submissions to only one by form and user.
342
 
343
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#users-addon "Users add-on")
344
 
345
- = User Registration Form add-on - Only available in the Developer and Platinum versions of the plugin =
346
 
347
- The add-on allows to register new website's users with the information collected by the form, even populate metadata required by other plugins.
348
 
349
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#user-registration-form-addon "User Registration Form add-on")
350
 
351
- = reCAPTCHA add-on - Only available in the Developer and Platinum versions of the plugin =
352
 
353
- The add-on allows to protect the forms using the Google reCAPTCHA instead of the captcha distributed with the plugin. reCAPTCHA is more visual and intuitive than the traditional captcha.
354
 
355
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#recaptcha-addon "reCAPTCHA add-on")
356
 
357
- = Google Analytics add-on - Only available in the Platinum version of the plugin =
358
 
359
- The "Google Analytics" add-on allows to generate usage reports in "Google Analytics" about the interactions of users with the form.
360
 
361
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#google-analytics-addon "Google Analytics add-on")
362
 
363
- = PayPal Pro add-on - Only available in the Platinum version of the plugin =
364
 
365
- With PayPal Pro the form can ask for the credit card details and charge it directly into your website without any redirection through the PayPal website. Once the user has filled the form fields and clicks the submit button the payment is processed and the posted data (excluding the credit card related information) is saved into the WordPress database.
366
 
367
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#paypal-pro-addon "PayPal Pro add-on")
368
 
369
- = Upload Files add-on - Only available in the Platinum version of the plugin =
370
 
371
- The "Upload Files" add-on allows to add the uploaded files through the forms to the Media Library, and access to them from the pages and posts of website.
372
 
373
- Furthermore, it allows to include the support of new mime types, than files format supported by default by WordPress.
374
 
375
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#upload-addon "Upload Files add-on")
376
 
377
- = DropBox Integration add-on - Only available in the Platinum version of the plugin =
378
 
379
- The "DropBox Integration" add-on allows to copy or move the files uploaded through the forms to a DropBox account.
380
 
381
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#dropbox-addon "DropBox Integration add-on")
382
 
383
- = ip2location add-on - Only available in the Platinum version of the plugin =
384
 
385
- The add on integrates the Calculated Fields Form with the ip2location databases to identify additional information of users based on their IP, as: Country, City Name, Coordinates, Weather Station, Time Zone, ZIP Code, etc...
386
 
387
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#ip2location-addon "ip2location add-on")
388
 
389
- = Google Places add-on - Only available in the Platinum version of the plugin =
390
 
391
- The "Google Places" add-on allows to integrate the input fields with the Google Places API to autocomplete the addresses entered by the users.
392
 
393
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#google-places-addon "Google Places add-on")
394
 
395
- = Autocomplete Places add-on - Only available in the Platinum version of the plugin =
396
 
397
- The "Autocomplete Places" add-on allows to integrate the input fields with the Photon API to autocomplete the addresses entered by the users.
398
 
399
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#autocomplete-places-addon "Autocomplete Places add-on")
400
 
401
- = Signature add-on - Only available in the Platinum version of the plugin =
402
 
403
- The "Signature" add-on converts the selected fields in "Signature" fields, allowing the users to sign with the mouse or directly in the touchscreens.
404
 
405
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#signature-addon "Signature add-on")
406
 
407
- = iCal add-on - Only available in the Platinum version of the plugin =
408
 
409
- The "iCal" add-on sends the users an iCal file as part of the confirmation email after the form submission to be imported into most popular calendars like Outlook and Google Calendar.
410
 
411
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#ical-addon "iCal add-on")
412
 
413
- = CSV Generator add-on - Only available in the Platinum version of the plugin =
414
 
415
- The "CSV Generator" add-on allows to export dynamically the information collected by the form to a CSV file, and send it as attachment in the notification emails.
416
 
417
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#csv-generator-addon "CSV Generator add-on")
418
 
419
- = PDF Generator add-on - Only available in the Platinum version of the plugin =
420
 
421
- The "PDF Generator" is an experimental add-on that allows to generate PDF files with the information collected by the forms, and send them as attachment of notification emails.
422
 
423
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#pdf-generator-addon "PDF Generator add-on")
424
 
425
- = WebMerge add-on - Only available in the Platinum version of the plugin =
426
 
427
- The "WebMerge" add-on integrates the forms with the WebMerge Service (FormStack documents), and generate PDF and Office documents at runtime with the information collected by the forms.
428
 
429
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#webmerge-addon "WebMerge add-on")
430
 
431
- The "WebMerge" add-on may be used to instegrate the form with the Silverpop service (today IBM Watson Campaign Automation) [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#silverpop-integration "Silverpop integration")
432
 
433
- = PrintFriendly add-on - Only available in the Platinum version of the plugin =
434
 
435
- The "PrintFriendly" add-on integrates the forms with the PrintFriendly API for generating PDF files after the forms submissions, and attach the resulting files to the notification emails.
436
 
437
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#printfriendly-addon "PrintFriendly add-on")
438
 
439
- = MailChimp add-on - Only available in the Platinum version of the plugin =
440
 
441
- Includes the "MailChimp" add-on to integrate the forms with the MailChimp Service to add new members to the lists.
442
 
443
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#mailchimp-addon "MailChimp add-on")
444
 
445
- = Mautic add-on - Only available in the Platinum version of the plugin =
446
 
447
- Includes the "Mautic" add-on to integrate the forms with the Mautic Service. This add-on creates new contacts, or update the existent ones, in the Mautic service.
448
 
449
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#mautic-addon "Mautic add-on")
450
 
451
- = HubSpot add-on - Only available in the Platinum version of the plugin =
452
 
453
- Includes the "HubSpot" add-on to integrate the forms with HubSpot. This add-on creates/updates HubSpot contacts with the information collected by the website's forms.
454
 
455
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#hubspot-addon "HubSpot add-on")
456
 
457
- = Emma add-on - Only available in the Platinum version of the plugin =
458
 
459
- Includes the "Emma" add-on to integrate the forms with the Emma Service to add new members to the Emma groups.
460
 
461
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#emma-addon "Emma add-on")
462
 
463
- = Twilio add-on - Only available in the Platinum version of the plugin =
464
 
465
- Includes the "Twilio" add-on to integrate the forms with the Twilio Service for sending notification messages (SMS) when the forms are submitted.
466
 
467
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#twilio-addon "Twilio add-on")
468
 
469
- = MailPoet add-on - Only available in the Platinum version of the plugin =
470
 
471
- Includes the "MailPoet" add-on to add new subscribers to the MailPoet's Mailing Lists (Both versions, MailPoet 2 and MailPoet 3).
472
 
473
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#mailpoet-addon "MailPoet add-on")
474
 
475
- = AffiliateWP add-on - Only available in the Platinum version of the plugin =
476
 
477
- Includes the "AffiliateWP" add-on to integrate the forms with the "AffiliateWP" plugin.
478
 
479
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#affiliatewp-addon "AffiliateWP add-on")
480
 
481
- = Authorize.Net add-on - Only available in the Platinum version of the plugin =
482
 
483
- The Authorize.net Server Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.
484
 
485
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#authorize-addon "Authorize.Net add-on")
486
 
487
- = Stripe add-on - Only available in the Platinum version of the plugin =
488
 
489
- The Stripe Payments addon (www.stripe.com) provides a way to accept all major cards from customers around the world on web.
490
 
491
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#stripe-addon "Stripe add-on")
492
 
493
- = Skrill Payments Integration add-on - Only available in the Platinum version of the plugin =
494
 
495
- The Skrill Payments addon provides a secure interface for accepting payments through a secure page. You can accept cards, more than 20 local payment methods and over 80 direct bank transfer connections with a single integration.
496
 
497
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#skrill-addon "Skrill add-on")
498
 
499
- = TargetPay (iDeal) add-on - Only available in the Platinum version of the plugin =
500
 
501
- The TargetPay addon provides integration with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en
502
 
503
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#targetpay-addon "TargetPay iDeal add-on")
504
 
505
- = Mollie (iDeal) add-on - Only available in the Platinum version of the plugin =
506
 
507
- The Mollie addon provides integration with iDeal, the most popular Dutch payment method.
508
 
509
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#mollie-addon "Mollie add-on")
510
 
511
- = RedSys / Servired / Sermepa add-on - Only available in the Platinum version of the plugin =
512
 
513
- The RedSys / Servired / Sermepa addon provides a secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia, Caixa, Bankinter, etc...)
514
 
515
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#redsys-addon "RedSys / Servired / Sermepa TPV add-on")
516
 
517
- = PayTM add-on - Only available in the Platinum version of the plugin =
518
 
519
- The PayTM addon provides a secure interface for accepting payments through credit card, debir cards, net banking, wallet and EMI. With over 100mn Paytm users in India, your customers will love the option to pay with their trusted Paytm Wallet.
520
 
521
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#paytm-addon "PayTM add-on")
522
 
523
- = SagePay add-on - Only available in the Platinum version of the plugin =
524
 
525
- The SagePay addon provides a secure interface for accepting payments through SagePay.
526
 
527
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#sagepay-addon "SagePay add-on")
528
 
529
- = Sage Payment add-on - Only available in the Platinum version of the plugin =
530
 
531
- The SagePayments addon provides a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions. All authorized and approved transactions will be delivered into your current bankcard and/or virtual check batches viewable within the Virtual Terminal for order processing and settlement.
532
 
533
- [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#sagepayment-addon "Sage Payment add-on")
534
 
535
- == Installation ==
536
 
537
- To install Calculated Fields Form, follow these steps:
538
-
539
- 1. Download and unzip the Calculated Fields Form plugin
540
- 2. Upload the entire calculated-fields-form/ directory to the /wp-content/plugins/ directory
541
- 3. Activate the Calculated Fields Form plugin through the Plugins menu in WordPress
542
- 4. Configure the settings at the administration menu >> Settings >> Calculated Fields Form
543
- 5. To insert the calculated / contact form into some content or post use the icon that will appear when editing contents
544
 
545
  == Frequently Asked Questions ==
546
 
547
  = Q: Is the "Calculated Fields Form" plugin compatible with "Autoptimize"? =
548
 
549
- A: [Yes, both plugins are compatible...](http://cff.dwbooster.com/faq#q214 "Yes, both plugins are compatible...")
550
 
551
  = Q: Is the "Calculated Fields Form" plugin compatible with "Plugin Organizer"? =
552
 
553
- A: [Yes, both plugins are compatible...](http://cff.dwbooster.com/faq#q319 "Yes, both plugins are compatible...")
554
-
555
- = Q: What means each field in the Calculated Fields Form settings area? =
556
 
557
- A: The Calculated Fields Form's page contains detailed information about each field in the plugin:
558
 
559
- [Form Fields](https://cff.dwbooster.com/documentation#common-fields "Form fields")
560
 
561
  = Q: Where can I publish a calculated fields form? =
562
 
563
- A: You can publish the forms into pages and posts. The shortcode can be also placed into the template. [Read more](https://cff.dwbooster.com/documentation#insertion-page "Publishing the forms")
 
 
564
 
565
- = Q: Is the form processing an option, for example, to email the form data and calculated results? =
566
 
567
- A: The form processing isn't available in the free version of the plugin. All commercial versions of the plugin allow processing the forms' submissions, send notification emails and integrate the forms with payment gateways. [Comparison of different versions of the plugin](https://cff.dwbooster.com/download#comparison "Comparing the plugin's distributions")
568
 
569
- = Q: Which calculation operations are included? =
570
 
571
- A: The Free and Professional versions of the plugin includes the Mathematical operations module, logical operations, the managing fields module and the third-party connection module, but there are other very interesting operations modules that are distributed only with the Deverloper and Platinum versions of the plugin: teh Date/Time operations module, Financial operations module, Distance module, and Server Side operations module. [Read more](/documentation#modules "Operations modules")
572
 
573
  = Q: How can I round the calculated result to 2 decimal digits? =
574
 
575
- A: [Using the "PREC" operation, described here](http://cff.dwbooster.com/documentation#prec "PREC Operation")
576
 
577
  = Q: Which are the operations with date values that the plugin allows? =
578
 
@@ -584,64 +591,57 @@ A: [List and description of financial operations](http://cff.dwbooster.com/docum
584
 
585
  = Q: How to calculate the payments amortization? =
586
 
587
- A: The CALCULATEAMORTIZATION is the most complex operation in the plugin and deserves its own section. Please, visit the following link to read a detailed description about its use:
588
 
589
  [How calculate an amortization?](http://cff.dwbooster.com/faq#q219 "CALCULATEAMORTIZATION Operation")
590
 
591
  = Q: Can I create global variables to be used in the equations? =
592
 
593
- A: [Yes, it is possible create global javascript variables through the shortcode of the form, or with the shortcode: CP_CALCULATED_FIELDS_VAR](http://cff.dwbooster.com/faq#q199 "FAQ Entry")
594
 
595
  = Q: How to populate the form fields with URL parameters? =
596
 
597
- A: [Visit the following link for instructions](http://cff.dwbooster.com/faq#q251 "FAQ Entry")
598
 
599
  = Q: How to use a session variable in the equations? =
600
 
601
- A: Please, read the answer in the FAQ entry:
602
- [Click Here](http://cff.dwbooster.com/faq#q268 "FAQ Entry")
603
 
604
  = Q: How to use cookie variables in the equations? =
605
 
606
- A: Please, read the answer in the FAQ entry:
607
- [Click Here](http://cff.dwbooster.com/faq#q269 "FAQ Entry")
608
 
609
  = Q: How to use a parameter passed by post in the equations? =
610
 
611
- A: Please, read the answer in the FAQ entry:
612
- [Click Here](http://cff.dwbooster.com/faq#q270 "FAQ Entry")
613
 
614
- = Q: How to use a parameter passed by get in the equations? =
615
 
616
- A: Please, read the answer in the FAQ entry:
617
- [Click Here](http://cff.dwbooster.com/faq#q271 "FAQ Entry")
618
 
619
- = Q: If I've inserted multiple shortcodes for a same form in a webpage, each of them defines an additional variable with the same name. How to access, from the equations in the form, to the value of the variable defined in its shortcode? =
620
 
621
- A: Please, visit the following link to the plugin documentation, and pay attention to the definition of the new variables as a hash of the values:
622
- [Click Here](http://cff.dwbooster.com/documentation#direct-javascript-vars "Create direct variables")
623
 
624
- = Q: How to define an initial date in a date field? =
625
 
626
  A: [Initializing date/time fields](http://cff.dwbooster.com/faq#q220 "FAQ Entry")
627
 
628
  = Q: How to change the language on datepicker? =
629
 
630
- A: There are different alternatives, directly through the form's structure, or uploading a new file to the plugin's folder. Please, visit the following link to read the instructions:
631
-
632
- [How to change the language on datepicker?](http://cff.dwbooster.com/faq#q221 "FAQ Entry")
633
 
634
  = Q: How to create relationships between date fields? =
635
 
636
- A: It is possible define the min date, max date, or select a date dynamically in a date field, depending on the date selected in another date field.
637
 
638
  [Create relationships between date fields](http://cff.dwbooster.com/documentation#relationship-between-date-fields "Documentation")
639
 
640
- = Q: Is there a way to format the form in a table structure (various fields in the same line) ? =
641
 
642
- A: Yes of course, please, read the following post in the plugin's blog: [Formatting the form (distributing the fields in columns)](https://cff.dwbooster.com/blog/2019/01/06/columns/ "Blog")
643
 
644
- = Q: How to convert a common button in a submit button? =
645
 
646
  A: To convert a button's field in a submit button, enter the following code as its onclick event:
647
 
@@ -656,11 +656,11 @@ Additionally, to hide the checkboxes and radio buttons, for using only the image
656
  #fbuilder input[type="radio"],
657
  #fbuilder input[type="checkbox"]{display:none !important;}
658
 
659
- = Q: How to replace the image displayed in a Media Field, based on the choice selected in a radio buttons field? =
660
 
661
- A: [How to replace the image displayed in a Media Field](http://cff.dwbooster.com/faq#q266 "FAQ Entry")
662
 
663
- = Q: In which order are evaluated the equations associated to the calculated fields? =
664
 
665
  A: [Evaluating the equations](http://cff.dwbooster.com/faq#q79 "FAQ Entry")
666
 
@@ -670,19 +670,19 @@ A: That feature is available in the [commercial versions of the plugin](https://
670
 
671
  Additional details in the "[PayPal Payment Configuration](https://cff.dwbooster.com/documentation#paypal-settings "PayPal Payment Integration")" section in the documentation page of the plugin.
672
 
673
- = Q: Non-latin characters aren't being displayed in the calculator form. There is a workaround? =
674
 
675
- A: [Solution Here](http://cff.dwbooster.com/faq#q225 "utf-8")
676
 
677
- = Q: The calculated form doesn't appear in the public website. Solution? =
678
 
679
- A: In the "throubleshoot area" (located below the list of forms in the settings area) change the "Script load method" from "Classic" to "Direct".
680
 
681
- There are other possible causes of the issue, related with the optimization plugins, additional details in the [FAQ page](https://cff.dwbooster.com/faq#compatibility-with-other-plugins "Compatibility with Other Plugins") of the plugin.
682
 
683
- = Q: How to create multi-page forms? =
684
 
685
- A: Simply insert "Page Break" fields in the form builder, between the fields that belong to different pages.
686
 
687
  = Q: How to display the selected values in the slider control? =
688
 
@@ -692,25 +692,25 @@ A: [Displaying selected values in slider control](http://cff.dwbooster.com/faq#q
692
 
693
  A: [Create new validation rules](http://cff.dwbooster.com/documentation#new-validation-rules "New Validation Rules")
694
 
695
- = Q: How to display a summary of entered data in the form? =
696
 
697
- A: Insert a summary control in the form, and select the fields to include in summary.
698
 
699
  = Q: How to highlight the fields in the summary control? =
700
 
701
  A: [Highlighting fields](http://cff.dwbooster.com/faq#q229 "FAQ Entry")
702
 
703
- = Q: Can a summary of submitted fields be displayed in the thank you page? =
704
 
705
- A: [Displaying a summary in the Thank you page](http://cff.dwbooster.com/faq#q230 "FAQ Entry")
706
 
707
  = Q: How can I apply CSS styles to the form fields? =
708
 
709
  A: [Applying CSS styles to the form fields](http://cff.dwbooster.com/faq#q82 "FAQ Entry")
710
 
711
- = Q: Is possible to modify any of predefined templates included with the plugin? =
712
 
713
- A: [Modifying the predefined templates](http://cff.dwbooster.com/faq#q231 "FAQ Entry")
714
 
715
  = Q: How to create a new template to use with my forms? =
716
 
@@ -720,21 +720,23 @@ A: [Creating new templates](http://cff.dwbooster.com/documentation#create-templa
720
 
721
  A: [Hiding the fields in form](http://cff.dwbooster.com/faq#q232 "FAQ Entry")
722
 
723
- = Q: Why after assign some of class names: column2, column3, or column4 (or using the new layout col-...), to a group of fields, the field that follows the group is displayed displaced at right? =
724
 
725
- A: [Inserting a separator field between rows](http://cff.dwbooster.com/faq#q320 "FAQ Entry")
726
 
727
  = Q: How assign multiple class names to a field? =
728
 
729
- A: The class names are assigned to the fields through the attribute: "Add Css Layout Keywords". If you need assign multiple class names to a field, you only should enter the class names separated by space characters. For example: myclass1 myclass2
 
 
730
 
731
  = Q: What files can be uploaded through the form? =
732
 
733
- A: [What files can be uploaded through the form?](http://cff.dwbooster.com/faq#q235 "FAQ Entry")
734
 
735
  = Q: How can I include the links to the uploaded files into the notification emails? =
736
 
737
- A: [Inserting the links to the uploaded files](http://cff.dwbooster.com/faq#q160 "FAQ Entry")
738
 
739
  = Q: Why the form builder is displaying the error message: "The entered data includes invalid characters..."? =
740
 
@@ -742,31 +744,25 @@ A: If you are copying the information used to configure the form from third-part
742
 
743
  = Q: How to use conditional statements in the equations? =
744
 
745
- A: There are different alternatives to use conditional statements in the equations:
746
 
747
- [Visit the following link](http://cff.dwbooster.com/faq#q239 "FAQ Entry")
748
 
749
- = Q: How could be printed the form only and not the complete page? =
750
 
751
- A: To print only the form, but not the rest of page, please, follows the instructions in the following link:
752
 
753
- [Visit the following link to the documentation page](http://cff.dwbooster.com/documentation#print-form "Documentation")
754
 
755
- = Q: How to disable the dynamic evaluation of the equations associated to the calculated fields? =
756
 
757
- A: To disable the dynamic evaluation of the equations in the form, you only should untick the "Eval dynamically the equations associated to the calculated fields" option, from the "Form Settings" tab, of form builder. But, in this case should be inserted a button field in the form with "calculate" option selected as its type, to evaluate the equations when the button be pressed.
758
 
759
- = Q: My company has different departments( the sales department, and the support group). Could you send a notification email to a representative of each departments when the form be submitted? =
760
 
761
- A: Yes, that is possible, you only should to enter all emails separated by the comma symbol, through the attribute: "Destination emails", in the form's settings.
762
 
763
- = Q: Why the users are not receiving the notification emails if was selected the option for sending a copy to the user, and selected the email field, from the form's settings? =
764
-
765
- A: If the users are not receiving the notification emails after the form's submission, there are different possible reasons:
766
-
767
- [Visit the following link](http://cff.dwbooster.com/faq#q241 "FAQ Entry")
768
-
769
- = Q: How to insert lines changes in the notification emails, when the HTML format is selected? =
770
 
771
  A: If you are using the HTML format in the notification emails, you should insert BR tags for the lines changes in the emails' contents:
772
 
@@ -776,19 +772,19 @@ A: If you are using the HTML format in the notification emails, you should inser
776
 
777
  A: [Inserting images in the notification emails](http://cff.dwbooster.com/faq#q223 "FAQ Entry")
778
 
779
- = Q: How to send specific fields in the notification emails, and not all form fields? =
780
 
781
- A: The notification emails can include all fields submitted by the form (&lt;%INFO%&gt;) or specific fields using their tags(&lt;%fieldname#%&gt;), furthermore of some other special tags. Please, visit the following link to get the complete list of tags to include in the email:
782
 
783
- [Accepted tags](https://cff.dwbooster.com/documentation#special-tags "Special tags in the notification emails and the thank you pages")
784
 
785
- = Q: How to create dependencies between fields in the notification emails, and the thank you pages? =
786
 
787
- A: [Entry on the FAQ page](http://cff.dwbooster.com/faq#q318 "FAQ Entry")
788
 
789
- = Q: How to implement my own operations? =
790
 
791
- A: [FAQ page](http://cff.dwbooster.com/faq#q245 "FAQ Entry")
792
 
793
  = Q: How to calculate the number of words in a text? =
794
 
@@ -802,44 +798,44 @@ A: [Calculating the number of characters in a text](http://cff.dwbooster.com/faq
802
 
803
  A: [Assigning values to the fields from equations](http://cff.dwbooster.com/faq#q248 "FAQ Entry")
804
 
805
- = Q: How to insert a link in the form? =
806
 
807
- A: The form builder does not include a specific field for links, however you can insert a link (or any other HTML tag) using a "HTML Content" field. Insert a "HTML Content" field in the form, and enter the anchor tag as its content. For example, to insert a link to our website, can be entered the following tag:
808
 
809
  **&lt;a href="http://cff.dwbooster.com"&gt;Visit the website&lt;/a&gt;**
810
 
811
  = Q: How to define dependencies between fields in the form? =
812
 
813
- A: [Click Here](https://cff.dwbooster.com/documentation#dependencies "Plugin Documentation")
814
 
815
- = Q: How can be created dependencies with multiple fields? =
816
 
817
- A: To create dependencies depending on values of multiple fields, requires the use of calculated fields. [Read more](http://cff.dwbooster.com/faq#q250 "FAQ Entry")
818
 
819
- = Q: How to prevent users vary the values of fields, for paying less than the calculated price? =
820
 
821
- A: The form settings include the attribute "Base amount" to define the minimum price allowed. So, if an user manipulates the calculated field for paying less, will be applied the number entered in the **"Base amount"** attribute.
822
 
823
- = Q: How to use the value of a field in the form, as the name of product submitted to PayPal? =
824
 
825
- A: Through the attribute: "Paypal product name" in the form's settings, it is defined the name of the product submitted to PayPal. You can enter a text, or the tag of the field you want to use to define the product's name. For example for using the value of the fieldname1 field, as the product's name, should be entered the text &lt;%fiedname1%&gt; in the "Paypal product name" attribute.
826
 
827
- = Q: How to allow to the users decide the frequency of payments for recurring payments? =
828
 
829
  A: Follows the instructions below:
830
 
831
  1. Inserts a Radio Button or DropDown field in the form.
832
- 2. Enters any texts, for the texts of choices, but for the choices values must be entered the number of months.
833
- 3. Selects the option: "From field", in the "Payment frequency" attribute.
834
- 4. Finally, select the field inserted in the second step, from the list beside the "Payment frequency" attribute.
835
 
836
- Tip: The maximum number of months allowed by PayPal for recurring payments is 12 months.
837
 
838
- If you decide give to the user the possibility to select the frequency of payments, you should take into consideration this field in the equation that calculates the amount to charge monthly.
839
 
840
  = Q: How to select a choice in a DropDown field, or Radio Button, based on calculated value? =
841
 
842
- A: I'll try to describe the process with some hypothetical examples. Assuming the radio button field is fieldname123, and you can to select the choice with the value 5, uses the following piece of code as part of the equation associated to the calculated field:
843
 
844
  getField(123).setVal(5);
845
 
@@ -855,11 +851,11 @@ A: Please, read the answer in the plugin's documentation:
855
  = Q: How to use the "DS" fields? =
856
 
857
  A: Please, visit the following post in our technical blog:
858
- [Click Here](https://cff.dwbooster.com/blog/2019/02/14/ds/ "Using the information stored in a database or csv file in the form")
859
 
860
- = Q: In a form with multiple "DS" fields. How to reduce the number of queries to database? =
861
 
862
- A: In this case the recommendation is to use "RecordSet DS" fields as datasource: [Click Here for instructions](https://cff.dwbooster.com/blog/2019/02/14/ds/ "Recordset DS field")
863
 
864
  = Q: How to use the data submitted by a form in another one? =
865
 
@@ -873,15 +869,15 @@ A: Please, read the instructions in the plugin's documentation.
873
 
874
  = Q: How do I integrate forms with WooCommerce products? =
875
 
876
- [Integrating the forms with WooCommerce products](http://cff.dwbooster.com/faq#q252 "FAQ Entry")
877
 
878
- = Q: How to customize the fields displayed in the cart page of WooCommerce? =
879
 
880
  [Customizing the fields in the shopping cart of WooCommerce](http://cff.dwbooster.com/faq#q315 "FAQ Entry")
881
 
882
  = Q: Why the WooCommerce product is not displaying the "Add to Cart" button? =
883
 
884
- A: If you have created the form correctly, and associated it to the product, even if you have configured the product to calculate the price with the form, you will need to assign a price to the product, through the attribute: "Regular Price", or WooCommerce won't display the "Add to Cart" button.
885
 
886
  = Q: What is SalesForce, and how to create new leads from my forms? =
887
 
@@ -895,10 +891,9 @@ A: Activates and configure the DropBox add-on, distributed with the Platinum ver
895
 
896
  = Q: How to generate a PDF file dynamically with the submitted information? =
897
 
898
- A: Please, visits the following link to get a tutorial:
899
- [Click Here](http://cff.dwbooster.com/faq#q273 "FAQ Entry")
900
 
901
- = Q: How to use a file field with multiple selection from Zapier? =
902
 
903
  A: Please, visits the following link to get the answer to your question:
904
  [Click Here](http://cff.dwbooster.com/faq#q274 "FAQ Entry")
@@ -908,24 +903,21 @@ A: Please, visits the following link to get the answer to your question:
908
  A: Please, visits the following link to get the answer to your question:
909
  [Click Here](http://cff.dwbooster.com/faq#q312 "FAQ Entry")
910
 
911
- = Q: How to protect the form against the attacks of the spam bots? =
912
 
913
- A: Please, visit the following entry in the FAQ page of the plugin with the instructions to protect the form:
914
  [Click Here](http://cff.dwbooster.com/faq#q313 "FAQ Entry")
915
 
916
- = Q: I've an issue with the character encoding in the exported CSV/Excel files? =
917
-
918
- A: If this happens follow these steps to correctly import the file:
919
 
920
- 1. Save the exported file as a csv
921
- 2. Open Excel
922
- 3. Import the data using Data &lt; Import External Data &lt; Import Data
923
- 4. Select the file type of "csv" and browse to your file
924
- 5. In the import wizard change the File_Origin to the related language character identifier
925
- 6. Change the Delimiter to comma if needed
926
- 7. Select where to import to and Finish
927
 
928
- This way the special characters should show correctly.
 
 
 
 
 
929
 
930
  == Screenshots ==
931
 
@@ -949,54 +941,57 @@ This way the special characters should show correctly.
949
 
950
  == Changelog ==
951
 
952
- = 1.0.449 =
953
 
954
- * Modifies the SUM and CONCATENATE operations for accepting plain objects as arguments.
955
 
956
- = 1.0.448 =
957
 
958
- * Modifies the HTML Content fields.
959
- * Improves the plugin's performance.
960
 
961
- = 1.0.447 =
962
 
963
- * Improves the plugin's performance.
964
- * Includes two new operations in the Managing Fields operations: EVALEQUATIONS and EVALEQUATION.
965
- * Fixes an issue in the PRESENTVALUE operation (Developer and Platinum versions of the plugin).
966
 
967
- = 1.0.446 =
968
 
969
- * Fixes a conflict with third party plugins that overwrite the POW operation in the plugin.
970
- * Modifies the WooCommerce add-on to allow its use with WooCommerce Booking and similar plugins (Developer and Platinum versions of the plugin).
971
 
972
- = 1.0.445 =
973
 
974
- * Fixes an issue with the Sliders for ranges.
975
- * Improves the mathematical operations.
976
 
977
- = 1.0.444 =
978
 
979
- * Fixes some compatibility issues with PHP8.
 
980
 
981
- = 1.0.443 =
982
 
983
- * Includes two new operations: ENABLEEQUATIONS and DISABLEEQUATIONS for enabling/disabling the dynamic evaluation of the equations, respectively.
984
 
985
- = 1.0.442 =
986
 
987
- * Modifies the validations on Date/Time fields.
988
- * Fixes an issue in the forms previews.
 
 
989
 
990
- = 1.0.441 =
991
 
992
- * Fixes an issue in the Slider controls using another slider field as the default value of the attributes.
 
 
993
 
994
- = 1.0.440 =
995
 
996
- * Modifies the setChoices method in the Radio Buttons, Checkbox, and DropDown controls.
997
 
998
  == Upgrade Notice ==
999
 
1000
- = 1.0.449 =
1001
 
1002
  Important note: If you are using the Professional version don't update via the WP dashboard but using your personal update link. Contact us if you need further information: http://cff.dwbooster.com/contact-us
3
  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.7.1
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculated fields and many other controls.
12
 
13
  == Description ==
14
 
15
+ The "Calculated Fields Form" plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields' values in the web form.
16
 
17
+ The possibilities are unlimited. You can create forms with financial calculations, date operations to create reservation forms, calculate the products' prices. The plugin includes text operations for editing, translation, or advertising services. There are available more advanced operations such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.
 
 
 
 
 
 
 
 
18
 
19
+ And the most impressive thing is that you don't need to hire a programmer to create the forms. With basic knowledges, you will have a professional form in just five minutes.
20
 
21
+ Creating a form is all visual. The "Calculated Fields Form" plugin includes a form editor with multiple controls. Text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, etc., and most importantly, calculated fields.
22
 
23
+ The form editor includes the list of controls, the property bar to edit field properties easily, the dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms' appearances. And if the predefined layouts are not enough for your project, there is a style editor to customize the form's design.
24
 
25
+ The "Calculated Fields Form" plugin includes integration with popular page builders:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  * Classic WordPress Editor.
28
  * Gutenberg Editor.
31
  * Beaver Builder.
32
  * WPBakery Page Builder.
33
  * DIVI Builder.
 
34
 
35
+ For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has a shortcode associated that allows you to insert it wherever you want.
36
+
37
+ == Features ==
38
+
39
+ = Main features: =
40
+
41
+ * Visual [form builder](https://cff.dwbooster.com/documentation#form-builder) with an intuitive and interactive interface.
42
+ * Includes [general-purpose controls](https://cff.dwbooster.com/documentation#common-fields) such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
43
+ * Includes [calculated fields](https://cff.dwbooster.com/documentation#calculated-fields-settings) whose values resulting from operations involving other form fields.
44
+ You can insert as many calculated fields in the form as you need.
45
+ * Contains advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
46
+ * It has many operations modules, [mathematical operations](https://cff.dwbooster.com/documentation#mathematical-module), [operations with dates](https://cff.dwbooster.com/documentation#datetime-module), [financial operations](https://cff.dwbooster.com/documentation#financial-module), [distance operations](https://cff.dwbooster.com/documentation#distance-module), text management, [operations for calling remote services](https://cff.dwbooster.com/documentation#connection-module), etc. The calculated fields can identify numbers and prices within the values of the fields.
47
+ * It is distributed with several predefined forms that you can use as a starting point for your projects.
48
+ * As well as several [design templates](https://cff.dwbooster.com/templates).
49
+ * Supports multi-pages forms by inserting page breaks controls between fields belonging to different pages.
50
+ * Allows grouping fields inside container controls (DIV and Fieldset).
51
+ * It is possible to define [dependency rules](https://cff.dwbooster.com/blog/2020/03/01/dependencies/) between fields in the form, very useful in the design of wizards.
52
 
53
+ = Other features: =
 
 
 
 
 
 
 
 
54
 
55
+ * From the plugin configuration page, it is possible to duplicate a form by pressing the "Clone" button associated with it. By cloning a form, you can reuse the work already done.
56
+ * Includes a troubleshooting and optimization area.
57
+ * Allows you to disable forms in the indexing process to improve the speed of the website.
58
+ * Includes a version control in the forms to be able to recover previous versions.
59
+
60
+ = Predefined forms: =
61
+
62
+ "Calculated Fields Form" is distributed with five predefined sample forms.
63
 
64
  1. Simple Calculator Operations
65
  2. Calculation with Dates (bookings with check-in and check-out dates)
67
  4. Pregnancy Calculator
68
  5. Lease Calculator
69
 
70
+ Which you can clone to implement your project, or you can create the form from scratch.
 
 
71
 
72
+ > <strong>Calculated Fields Form Commercial</strong><br />
73
+ >The free version of the "Calculated Fields Form" plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database's connection (and connection to other data sources), complex operations, and many other features.
74
 
75
+ = Features of the Profesional version: =
76
 
77
+ * All the features of the free version of the plugin.
78
+ * Allows submitting the data collected by the forms and [store it on the website](https://cff.dwbooster.com/documentation#check-submissions) for review.
79
+ * Allows sending [notification emails](https://cff.dwbooster.com/documentation#email-settings) with the data collected by the form (as well as [confirmation emails](https://cff.dwbooster.com/documentation#copy-user) to the users).
80
+ * Allows to [integrate the form to PayPal](https://cff.dwbooster.com/documentation#paypal-settings) and calculate the amount to be charged through a calculated field.
81
+ Payments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) - Directive (EU).
82
+ * Allows [exporting and importing forms](https://cff.dwbooster.com/documentation#import-export-form) between different WordPress.
83
+ * Includes different mechanisms to protect forms, such as [Captcha](https://cff.dwbooster.com/documentation#captcha-settings), WordPress Nonce, honeypots fields.
84
+ * Allows associating thank you pages to the forms. You can show a summary of the form's submission on the thank you pages.
85
+ * Includes a dashboard widget to show the last week's submissions.
86
+ * Allows caching the forms to increase the rendering speed.
87
+ * Includes the option to [export the information submitted](https://cff.dwbooster.com/documentation#export-submissions) by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
88
 
89
+ = Features of the Developer version: =
90
 
91
+ * Includes all the features of the free and professional version of the plugin.
92
+ * Includes advanced [controls that connect to different data sources](https://cff.dwbooster.com/blog/2019/02/14/ds/) (databases, CSV files, posts, taxonomies, user information, and JSON objects).
93
+ * Includes a [financial operations module](https://cff.dwbooster.com/documentation#financial-module).
94
+ * Includes a [date and time operations module](https://cff.dwbooster.com/documentation#datetime-module).
95
+ * Includes a [distance and travel time operations module](https://cff.dwbooster.com/documentation#distance-module). Uses "Google Maps".
96
+ * Includes [Chart.js operations module](https://cff.dwbooster.com/documentation#chart-module) to generate charts with the form data. It uses the ChartJS.org library.
97
+ * Includes a script that allows the developer to save the data collected by the form in an [external database](https://cff.dwbooster.com/documentation#third-party-database).
 
 
98
 
99
+ **Includes add-ons to extend the form features and make use of third-party plugins and external services**
100
 
101
+ * [SERVER SIDE EQUATION add-on](https://cff.dwbooster.com/add-ons/server-side-equations). It allows defining server-side equations.
102
+ * [WooCommerce add-on](https://cff.dwbooster.com/add-ons/woocommerce). It allows you to integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
103
+ * [SalesForce add-on](https://cff.dwbooster.com/add-ons/salesforce). It allows integrating the form with the SalesForce service.
104
+ * [WebHooks add-on](https://cff.dwbooster.com/add-ons/webhook). It allows sending the information collected by the form to a WebHook URL. This add-on opens countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you would be connecting to hundreds of third-party services (Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, and many others).
105
+ * [Users Permissions add-on](https://cff.dwbooster.com/add-ons/users-permissions). It allows controlling the forms' access. As well as allow users to access and edit their data.
106
+ * [Users Registration Form add-on](https://cff.dwbooster.com/add-ons/user-registration-form). It allows you to build a user registration form that captures the user's basic information and metadata.
107
+ * [reCAPTCHA add-on](https://cff.dwbooster.com/add-ons/recaptcha). It allows replacing the basic captcha with Google reCAPTCHA to protect the forms.
 
 
 
 
 
 
 
108
 
109
+ = Features of the Platinum version: =
110
 
111
  * All features of free, premium, and developer versions of the plugin.
112
+ * [Easy Digital Downloads add-on](https://cff.dwbooster.com/add-ons/edd) to integrate the forms into the Easy Digital Downloads products and calculate their prices at the runtime.
113
+ * [Google Analytics add-on](https://cff.dwbooster.com/add-ons/google-analytics) to generate usage reports in "Google Analytics" for the users' actions.
114
+ * [PayPal Pro add-on](https://cff.dwbooster.com/add-ons/paypal-pro) to ask for the credit card details of payers and charge it directly into your website without any redirection through the PayPal website.
115
+ * [Upload Files add-on](https://cff.dwbooster.com/add-ons/upload) to add the uploaded files into the media library and extend the files' types accepted by WordPress.
116
+ * [DropBox Integration add-on](https://cff.dwbooster.com/add-ons/dropbox) to copy or move the uploaded files to a DropBox account.
117
+ * [ip2location add-on](https://cff.dwbooster.com/add-ons/ip2location) to identify the users' data using the ip2location databases.
118
+ * [Google Places add-on](https://cff.dwbooster.com/add-ons/google-places) to transform form fields into autocomplete address fields.
119
+ * [Autocomplete Places add-on](https://cff.dwbooster.com/add-ons/autocomplete-places) to transform form fields into autocomplete address fields by using the Photon API.
120
+ * [Signature add-on](https://cff.dwbooster.com/add-ons/signature) to convert form fields into "Signature" fields, allowing the users to sign the form with the mouse or touchscreens.
121
+ * [iCal add-on](https://cff.dwbooster.com/add-ons/ical) to send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
122
+ * [CSV Generator add-on](https://cff.dwbooster.com/add-ons/csv-generator) to export the information collected by the form to CSV files and attach them in the notification emails.
123
+ * [PDF Generator add-on](https://cff.dwbooster.com/add-ons/pdf-generator) to generate PDF files with the information collected by the forms and attach them to the notification emails.
124
+ * [WebMerge add-on](https://cff.dwbooster.com/add-ons/webmerge) to integrate the forms with the FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
125
+ * [PrintFriendly add-on](https://cff.dwbooster.com/add-ons/printfriendly) to generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
126
+ * [MailChimp add-on](https://cff.dwbooster.com/add-ons/mailchimp) to add new members to the MailChimp account.
127
+ * [Mautic add-on](https://cff.dwbooster.com/add-ons/mautic) to add new contacts (or update the existent ones) into the Mautic Service.
128
+ * [HubSpot add-on](https://cff.dwbooster.com/add-ons/hubspot) to add/update contacts in HubSpot, using the information collected by the form.
129
+ * [Emma add-on](https://cff.dwbooster.com/add-ons/emma) to add new members to the Emma Service.
130
+ * [Twilio add-on](https://cff.dwbooster.com/add-ons/twilio) for sending notification messages (SMS) in the forms' submissions.
131
+ * [MailPoet add-on](https://cff.dwbooster.com/add-ons/mailpoet) to add new subscribers to the MailPoet's Mailing Lists (Both versions, MailPoet 2 and MailPoet 3).
132
+ * [AffiliateWP add-on](https://cff.dwbooster.com/add-ons/affiliatewp) to integrate the forms with the AffiliateWP plugin.
133
+ * [Authorize.Net add-on](https://cff.dwbooster.com/add-ons/authorize) to accept payments via Authorize.Net from the forms.
134
+ * [Stripe add-on](https://cff.dwbooster.com/add-ons/stripe) to accept payments via the Stripe payment gateway from the form.
135
+ * [Skrill Payments Integration](https://cff.dwbooster.com/add-ons/skrill) provides integration with Skrill Moneybookers payment gateway.
136
+ * [TargetPay (iDeal) add-on](https://cff.dwbooster.com/add-ons/targetpay) provides integration with iDeal, the favorite Dutch payment method.
137
+ * [Mollie (iDeal) add-on](https://cff.dwbooster.com/add-ons/mollie) to accept payments via iDeal.
138
+ * [RedSys / Servired / Sermepa add-on](https://cff.dwbooster.com/add-ons/redsys) provides a secure interface for accepting credit card payments from most banks in Spain.
139
+ * [PayTM add-on](https://cff.dwbooster.com/add-ons/paytm) provides a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
140
+ * [SagePay add-on](https://cff.dwbooster.com/add-ons/sagepay) provides a secure interface for accepting payments via SagePay.
141
+ * [Sage Payment add-on](https://cff.dwbooster.com/add-ons/sagepayment) provides a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
142
+
143
+ Please, keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: [CLICK HERE](https://cff.dwbooster.com/documentation#register "Registering the plugin")
144
+
145
 
146
  == Other Notes ==
147
 
 
148
 
149
+ This section mainly contains notes on features of the form builder that are too long to explain in the main description.
150
+
151
+ = Conditional rules =
152
 
153
+ It is possible to show or hide form fields (dependent fields) based on the options ticked in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.
154
 
155
+ The value of a dependent field is zero when it is hidden/disabled. The plugin excludes from submission the disabled form fields.
156
 
157
+ [Additional details about the use of dependencies](https://cff.dwbooster.com/blog/2020/03/01/dependencies/ "Description about the use of dependencies")
158
 
159
+ = Predefined values =
160
 
161
+ The predefined values in the fields have two possible uses:
162
 
163
+ 1- To fill the field by default. That makes it easier for the end-user to enter values.
164
 
165
+ 2- Hint of the values to be entered in the field (like "enter your name"). To use the predefined value as a placeholder, you must tick the checkbox "Hide predefined value on click" The value will disappear once the user starts filling in the field. The calculated fields ignore placeholders from the equations.
166
 
167
+ = The "User Instructions" attributes =
168
 
169
+ The "User instructions" attribute in the field settings allows you to instruct the user on fill in the field. By default, the instructions appear as a smaller text on the public website. But they can be configured as tooltips.
170
 
171
+ = Adding CSS layout keywords =
172
 
173
+ The "Add CSS layout keywords" attribute in the fields settings allows you to apply CSS styles to fields. You must enter only the name of the CSS classes names and not their definitions.
174
 
175
+ You can define the CSS classes via the "Customize Form Design" attribute in the "Form Settings" tab. This attribute contains a CSS editor with syntax highlighting and error checking.
176
 
177
+ If you want to assign several class names to the field, separate them by space characters.
178
+
179
+ The plugin includes multiple predefined classes that you can assign to the form fields.
180
+
181
+ More information about the form's design, by reading the following post in the plugin's blog:
182
+
183
+ [Customizing the form's design](https://cff.dwbooster.com/blog/2020/01/12/form-design/ "Customizing the form's design")
184
+
185
+ The classes listed below allow you to align two, three, or four fields on the same line:
186
 
187
  column2
188
  column3
189
  column4
190
 
191
+ For example, if you want to put two fields on the same line, give both fields the class name "column2".
 
 
192
 
193
+ There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:
194
 
195
+ [Formatting the form (distributing the fields in columns)](https://cff.dwbooster.com/blog/2019/01/06/columns/ "Formatting the form (distributing the fields in columns)")
196
 
197
+ = Multi-page form =
198
 
199
+ To create multi-pages forms, you must insert "Page break" controls between fields belonging to different pages.
200
 
201
+ When the user presses the "Next Page" button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the "Next page" action.
202
 
203
+ = Hidden calculated fields =
204
 
205
+ Calculated fields include a checkbox in their configuration that allows to hide them from the public website. This feature is essential in those fields that we will use to calculate intermediate values or when we want to show the results only in emails or thank you pages.
206
 
207
+ = Equations / formulas format for calculated fields =
208
 
209
+ Below, I will include some possible formulas as examples, but the possibilities are endless.
210
 
211
  * With simple mathematical operations:
212
 
 
213
  `fieldname1 + fieldname2`
214
 
215
  `fieldname1 * fieldname2`
218
 
219
  `fieldname1 - fieldname2`
220
 
221
+ `fieldname1 - fieldname2`
222
 
223
+ * With mathematical operations involving multiple fields and grouped fields:
224
 
225
+ `fieldname1 * (fieldname2 + fieldname3)`
226
 
227
+ * With rounding operations. Round the result to two decimal places:
228
 
229
+ `PREC(fieldname2 / fieldname3, 2)`
230
 
231
+ * There is an infinity of formulas that require complex structures. For example, the following formula includes conditional statements:
232
 
233
+ `(function () {`
234
+ `if (100 < fieldname3) return fieldname1 + fieldname2;`
235
+ `if (fieldname3 <= 100) return fieldname1 * fieldname2;`
236
+ `})();`
237
 
238
+ * For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:
239
 
240
+ `(function () {`
241
+ `var result = 0;`
242
+ `/* Your code here */`
243
+ `return result;`
244
+ `}) ();`
245
 
246
+ = Operations and operators to use in equations/formulas =
247
 
248
+ One of the "Calculated Fields Form" strengths is to use any valid javascript code to implement the equations/formulas.
249
 
250
+ However, the plugin includes a wide variety of operations and operators to simplify the development process.
251
 
252
+ [Mathematical Operations and Operators](http://cff.dwbooster.com/documentation#mathematical-module)
253
 
254
+ [Conditional operations](http://cff.dwbooster.com/documentation#conditions-module)
 
 
 
255
 
256
+ [Field Handling Operations](http://cff.dwbooster.com/documentation#managing-fields-module)
257
 
258
+ [Operations for interacting with external services](http://cff.dwbooster.com/documentation#connection-module)
259
 
260
+ [Operations for handling URLs and query strings](http://cff.dwbooster.com/documentation#url-module)
 
 
 
 
 
261
 
262
+ In addition to the operations modules listed above, the Developer and Platinum versions of the plugin include additional modules:
263
 
264
+ [Date and time operations](http://cff.dwbooster.com/documentation#datetime-module)
265
 
266
+ [Financial Operations](http://cff.dwbooster.com/documentation#financial-module)
267
 
268
+ [Distance and Travel Time Operations](http://cff.dwbooster.com/documentation#distance-module)
269
 
270
+ [Operations to generate charts](http://cff.dwbooster.com/documentation#chart-module)
271
 
272
+ = Controls available in the form generator of the "Calculated Fields Form" =
273
 
274
+ The complete list of controls is available at the link: [CLICK HERE](http://cff.dwbooster.com/documentation#common-fields)
275
 
276
+ = Create JavaScript variables to use in the equations from parameters received by "GET" or "POST", "SESSION" variables, or "COOKIES" =
277
 
278
+ The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate javascript variables from parameters received by "GET" or "POST", "SESSION" variables, or "COOKIES":
279
 
280
+ `[CP_CALCULATED_FIELDS_VAR name="..."]`
281
 
282
+ In the shortcode, you must replace the "..." symbols with the name of the parameter or variable. It will be the same name for the javascript variable.
283
 
284
+ For example:
285
 
286
+ `[CP_CALCULATED_FIELDS_VAR name="varname"]`
287
 
288
+ You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: `fieldname1*varname`
289
 
290
+ The complete list of parameters accepted by the variables shortcode is available at the following link: [CLICK HERE](http://cff.dwbooster.com/documentation#javascript-variables)
291
 
292
+ = Tips for calculating prices =
293
 
294
+ One of the most frequent uses of our plugin is for price calculation. When displaying the prices of a good, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the "Instruct. Text" fields to indicate the terms, conditions, and validity time of the offer.
295
 
296
+ Note that you can make the "Instruct. Text" fields dependent on the calculated value. That allows you to vary the text displayed to the user depending on the calculated price. As often, the terms, conditions, or offers depend on the amount of the transaction.
297
 
298
+ == Installation ==
299
 
300
+ To install the "Calculated Fields Form" plugin, please follow these steps:
301
 
302
+ 1. Download the .zip the Calculated Fields Form plugin.
303
+ 2. Go to the Plugins section on your WordPress.
304
+ 3. Press the "Add New" button at the top of the section.
305
+ 4. Press the "Upload Plugin" button and then select the zipped file downloaded in the first step.
306
+ 5. Finally, install and activate the plugin.
307
 
308
+ To build a form, go to the menu option "Calculated Fields Form"
309
 
310
+ To insert the calculated / contact form into some content or post, use the corresponding form's shortcode. Each web form has associated a shortcode.
311
 
312
+ == Add ons ==
313
 
314
+ The add ons are distributed only with the Developer and Platinum versions of the plugin.
315
 
316
+ The plugin list the add ons in the "Add-ons area" of the settings page. For enabling the add ons, you must tick their corresponding checkbox and press the "Activate/Deactivate Add ons" button.
317
 
318
+ = Server Side Equations add on - included in the Developer and Platinum versions of the plugin =
319
 
320
+ The "Server-Side Equations" add-on allows defining equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.
321
 
322
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#server-side-equations-addon "Server Side Equations add-on")
323
 
324
+ = WooCommerce add on - included in the Developer and Platinum versions of the plugin =
325
 
326
+ The WooCommerce add-on allows integrating the forms created by the "Calculated Fields Form" with the WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.
327
 
328
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#woocommerce-addon "WooCommerce add-on")
329
 
330
+ = Easy Digital Downloads add on - included in the Platinum version of the plugin =
331
 
332
+ The Easy Digital Downloads add-on allows integrating the forms created by the "Calculated Fields Form" with the EDD products and calculate their price dynamically at the runtime.
333
 
334
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#edd-addon "Easy Digital Downloads add-on")
335
 
336
+ = SalesForce add on - included in the Developer and Platinum versions of the plugin =
337
 
338
+ The SalesForce add-on allows adding new leads in the SalesForce account with the data collected by the forms.
339
 
340
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#salesforce-addon "SalesForce add-on")
341
 
342
+ = WebHook add on - included in the Developer and Platinum versions of the plugin =
343
 
344
+ The add-on allows posting the information collected by the forms to WebHooks URLs.
345
 
346
+ Connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you would have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services [https://zapier.com/zapbook/apps/](https://zapier.com/zapbook/apps/ "Zapier"), [https://flow.microsoft.com/](https://flow.microsoft.com/ "Microsoft Flow"), [https://ifttt.com/discover](https://ifttt.com/discover "IFTTT")
347
 
348
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#webhook-addon "WebHook add-on")
349
 
350
+ = Users Permissions add on - included in the Developer and Platinum versions of the plugin =
351
 
352
+ The add-on allows you to control access to forms. You can allow access only to registered users, users with certain roles, or to specific users.
353
 
354
+ The plugin adds a new shortcode to the plugin to list the data submitted by the logged user (it is possible to insert the new shortcode in the user's profile) and assign users permissions to edit their information or delete an entry.
355
 
356
+ Also, the add-on allows limiting the number of submissions to only one per form/user.
357
 
358
+ [CLICK HERE for additional information ](http://cff.dwbooster.com/documentation#users-addon "Users add-on")
359
 
360
+ = User Registration Form add on - included in the Developer and Platinum versions of the plugin =
361
 
362
+ The add-on allows building user registration forms. The form could collect the basic user information and metadata required by other plugins.
363
 
364
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#user-registration-form-addon "User Registration Form add-on")
365
 
366
+ = reCAPTCHA add on - included in the Developer and Platinum versions of the plugin =
367
 
368
+ The add-on allows protecting the forms using the Google reCAPTCHA instead of the basic captcha distributed with the plugin. reCAPTCHA is more visual and intuitive than traditional captchas.
369
 
370
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#recaptcha-addon "reCAPTCHA add-on")
371
 
372
+ = Google Analytics add on - included in the Platinum version of the plugin =
373
 
374
+ The "Google Analytics" add-on allows generating usage reports in "Google Analytics" for the users' actions.
375
 
376
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#google-analytics-addon "Google Analytics add-on")
377
 
378
+ = PayPal Pro add on - included in the Platinum version of the plugin =
379
 
380
+ PayPal Pro allows asking for the credit card details and charging them directly from your website without redirecting the user to the PayPal website. Once the user has filled the form fields and clicks the submit button, the payment is processed, and the posted data (excluding the credit card information) is stored in the WordPress database.
381
 
382
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#paypal-pro-addon "PayPal Pro add-on")
383
 
384
+ = Upload Files add on - included in the Platinum version of the plugin =
385
 
386
+ Every commercial version of the plugin includes the "Upload File" control to upload files from the form. However, the "Upload Files" add-on allows adding the uploaded files to the Media Library and access to them from the pages and posts of the website.
387
 
388
+ WordPress restricts the files' types you can upload. The "Uploads Files" add-on allows extending the list of the accepted files.
389
 
390
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#upload-addon "Upload Files add-on")
391
 
392
+ = DropBox Integration add on - included in the Platinum version of the plugin =
393
 
394
+ "DropBox Integration" add-on allows copying or moving files uploaded through the forms to a DropBox account.
395
 
396
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#dropbox-addon "DropBox Integration add-on")
397
 
398
+ = ip2location add on - included in the Platinum version of the plugin =
399
 
400
+ The add-on allows using the ip2location databases to identify additional information of the users based on their IP. Countries, City Name, Coordinates, Weather Station, Time Zone, ZIP Code, etc.
401
 
402
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#ip2location-addon "ip2location add-on")
403
 
404
+ = Google Places add on - included in the Platinum version of the plugin =
405
 
406
+ The "Google Places" add-on allows transforming fields into autocomplete address fields calling the Google Places API.
407
 
408
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#google-places-addon "Google Places add-on")
409
 
410
+ = Autocomplete Places add on - included in the Platinum version of the plugin =
411
 
412
+ The "Autocomplete Places" add-on allows transforming fields into autocomplete address fields by calling the Photon API.
413
 
414
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#autocomplete-places-addon "Autocomplete Places add-on")
415
 
416
+ = Signature add on - included in the Platinum version of the plugin =
417
 
418
+ The "Signature" add-on transforms fields into "Signature" fields to allow the users to sign the form with their mouses or touchscreens.
419
 
420
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#signature-addon "Signature add-on")
421
 
422
+ = iCal add on - included in the Platinum version of the plugin =
423
 
424
+ The "iCal" add-on sends the users iCal files attached to the confirmation emails to import events into most popular calendars like Outlook and Google Calendar.
425
 
426
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#ical-addon "iCal add-on")
427
 
428
+ = CSV Generator add on - included in the Platinum version of the plugin =
429
 
430
+ The "CSV Generator" add-on exports the information collected by the form to CSV files and attaches them to the notification emails.
431
 
432
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#csv-generator-addon "CSV Generator add-on")
433
 
434
+ = PDF Generator add on - included in the Platinum version of the plugin =
435
 
436
+ The "PDF Generator" is an experimental add-on. It generates PDF files with the information collected by the forms and attaches them to the notification emails.
437
 
438
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#pdf-generator-addon "PDF Generator add-on")
439
 
440
+ = WebMerge add on - included in the Platinum version of the plugin =
441
 
442
+ The "WebMerge" add-on integrates the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the form collected information.
443
 
444
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#webmerge-addon "WebMerge add-on")
445
 
446
+ The "WebMerge" add-on allows integrating the form with the Silverpop service (today IBM Watson Campaign Automation) [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#silverpop-integration "Silverpop integration")
447
 
448
+ = PrintFriendly add on - included in the Platinum version of the plugin =
449
 
450
+ The "PrintFriendly" add-on sends the information collected by the forms to PrintFriendly and attaches the resulting PDF files to the notification emails.
451
 
452
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#printfriendly-addon "PrintFriendly add-on")
453
 
454
+ = MailChimp add on - included in the Platinum version of the plugin =
455
 
456
+ It allows adding new members to the MailChimp lists with the information collected by the form.
457
 
458
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#mailchimp-addon "MailChimp add-on")
459
 
460
+ = Mautic add on - included in the Platinum version of the plugin =
461
 
462
+ The "Mautic" add-on adds/updates contacts in the Mautic service with the information collected by the forms.
463
 
464
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#mautic-addon "Mautic add-on")
465
 
466
+ = HubSpot add on - included in the Platinum version of the plugin =
467
 
468
+ This add-on adds/updates HubSpot contacts with the information collected by the form.
469
 
470
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#hubspot-addon "HubSpot add-on")
471
 
472
+ = Emma add on - included in the Platinum version of the plugin =
473
 
474
+ The "Emma" add-on connects the forms to the Emma Service to add new members to the Emma groups.
475
 
476
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#emma-addon "Emma add-on")
477
 
478
+ = Twilio add on - included in the Platinum version of the plugin =
479
 
480
+ The "Twilio" add-on allows sending notification messages (SMS) through Twilio in the form's submissions.
481
 
482
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#twilio-addon "Twilio add-on")
483
 
484
+ = MailPoet add on - included in the Platinum version of the plugin =
485
 
486
+ The "MailPoet" add-on adds subscribers to the MailPoet's Mailing Lists (Both versions, MailPoet 2 and MailPoet 3).
487
 
488
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#mailpoet-addon "MailPoet add-on")
489
 
490
+ = AffiliateWP add-on - included in the Platinum version of the plugin =
491
 
492
+ The "AffiliateWP" add-on integrates the forms with the "AffiliateWP" plugin.
493
 
494
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#affiliatewp-addon "AffiliateWP add-on")
495
 
496
+ = Authorize.Net add on - included in the Platinum version of the plugin =
497
 
498
+ The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.
499
 
500
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#authorize-addon "Authorize.Net add-on")
501
 
502
+ = Stripe add on - included in the Platinum version of the plugin =
503
 
504
+ The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.
505
 
506
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#stripe-addon "Stripe add-on")
507
 
508
+ = Skrill Payments Integration add on - included in the Platinum version of the plugin =
509
 
510
+ The Skrill Payments add-on provides an interface for accepting payments through secure pages.
511
 
512
+ You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.
513
 
514
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#skrill-addon "Skrill add-on")
515
 
516
+ = TargetPay (iDeal) add on - included in the Platinum version of the plugin =
517
 
518
+ The TargetPay add-on provides integration with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: [https://www.targetpay.com/info/ideal?setlang=en](https://www.targetpay.com/info/ideal?setlang=en "TargetPay")
519
 
520
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#targetpay-addon "TargetPay iDeal add-on")
521
 
522
+ = Mollie (iDeal) add on - included in the Platinum version of the plugin =
523
 
524
+ The Mollie add-on provides integration with iDeal, the favorite Dutch payment method.
525
 
526
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#mollie-addon "Mollie add-on")
527
 
528
+ = RedSys / Servired / Sermepa add on - included in the Platinum version of the plugin =
529
 
530
+ The RedSys / Servired / Sermepa add-on provides a secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)
531
 
532
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#redsys-addon "RedSys / Servired / Sermepa TPV add-on")
533
 
534
+ = PayTM add-on - included in the Platinum version of the plugin =
535
 
536
+ The PayTM add-on provides a secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100mn Paytm users in India, your customers will love the option to pay with their trusted PayTM Wallet.
537
 
538
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#paytm-addon "PayTM add-on")
539
 
540
+ = SagePay add-on - included in the Platinum version of the plugin =
541
 
542
+ The SagePay add-on provides a secure interface for accepting payments through SagePay.
543
 
544
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#sagepay-addon "SagePay add-on")
545
 
546
+ = Sage Payment add-on - included in the Platinum version of the plugin =
547
 
548
+ The SagePayments add-on provides an interface for accepting payments through a secure SSL-Checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered into your current bank card and/or virtual check batches viewable within the Virtual Terminal for order processing and settlement.
549
 
550
+ [CLICK HERE for additional information](http://cff.dwbooster.com/documentation#sagepayment-addon "Sage Payment add-on")
 
 
 
 
 
 
551
 
552
  == Frequently Asked Questions ==
553
 
554
  = Q: Is the "Calculated Fields Form" plugin compatible with "Autoptimize"? =
555
 
556
+ A: [Yes, it is](http://cff.dwbooster.com/faq#q214 "Yes, it is")
557
 
558
  = Q: Is the "Calculated Fields Form" plugin compatible with "Plugin Organizer"? =
559
 
560
+ A: [Yes, it is](http://cff.dwbooster.com/faq#q319 "Yes, it is")
 
 
561
 
562
+ = Q: What control types include the plugin? =
563
 
564
+ A: The Calculated Fields Form's page contains detailed information about each field in the plugin: [Click Here](https://cff.dwbooster.com/documentation#common-fields "Click Here")
565
 
566
  = Q: Where can I publish a calculated fields form? =
567
 
568
+ A: You can publish the forms into pages and posts. The shortcode can be also placed into the theme templates. [Read more](https://cff.dwbooster.com/documentation#insertion-page "Publishing the forms")
569
+
570
+ = Q: Can I send the form data and calculated results by email? =
571
 
572
+ A: This feature is included in the commercial versions of the plugin.
573
 
574
+ The commercial versions of the plugin allow processing the forms' submissions, send notification emails, and integrate the forms with payment gateways. [Comparing the different versions of the plugin](https://cff.dwbooster.com/download#comparison "Comparing the plugin's distributions")
575
 
576
+ = Q: Which calculation operations are available with the plugin? =
577
 
578
+ A: The Free and Professional versions of the plugin include the Mathematical operations module, logical operations, the managing fields module, and the third-party connection module. Other interesting operations modules are distributed only with the Developer and Platinum versions of the plugin: the Date/Time operations module, Financial operations module, Distance module, and Server Side operations module. [Read more](https://cff.dwbooster.com/documentation#modules "Operations modules")
579
 
580
  = Q: How can I round the calculated result to 2 decimal digits? =
581
 
582
+ A: [Use the "PREC" operation for rounding numbers with decimal places.](http://cff.dwbooster.com/documentation#prec "PREC Operation")
583
 
584
  = Q: Which are the operations with date values that the plugin allows? =
585
 
591
 
592
  = Q: How to calculate the payments amortization? =
593
 
594
+ A: The CALCULATEAMORTIZATION is the most complex operation in the plugin and deserves its own section. Please, visit the following link to read a detailed description of its use:
595
 
596
  [How calculate an amortization?](http://cff.dwbooster.com/faq#q219 "CALCULATEAMORTIZATION Operation")
597
 
598
  = Q: Can I create global variables to be used in the equations? =
599
 
600
+ A: [Yes, it is possible to create global javascript variables through the form shortcode, or by using the variables shortcode: CP_CALCULATED_FIELDS_VAR](http://cff.dwbooster.com/faq#q199 "FAQ Entry")
601
 
602
  = Q: How to populate the form fields with URL parameters? =
603
 
604
+ A: Please, read the answer in the FAQ entry: [Click Here](http://cff.dwbooster.com/faq#q251 "FAQ Entry")
605
 
606
  = Q: How to use a session variable in the equations? =
607
 
608
+ A: Please, read the answer in the FAQ entry: [Click Here](http://cff.dwbooster.com/faq#q268 "FAQ Entry")
 
609
 
610
  = Q: How to use cookie variables in the equations? =
611
 
612
+ A: Please, read the answer in the FAQ entry: [Click Here](http://cff.dwbooster.com/faq#q269 "FAQ Entry")
 
613
 
614
  = Q: How to use a parameter passed by post in the equations? =
615
 
616
+ A: Please, read the answer in the FAQ entry: [Click Here](http://cff.dwbooster.com/faq#q270 "FAQ Entry")
 
617
 
618
+ = Q: How to use a parameter passed by GET in the equations? =
619
 
620
+ A: Please, read the answer in the FAQ entry: [Click Here](http://cff.dwbooster.com/faq#q271 "FAQ Entry")
 
621
 
622
+ = Q: If I've inserted multiple shortcodes for the same form in a webpage, each of them defines an additional variable with the same name. How to access the value of the variable defined in its shortcode from the equations in the form? =
623
 
624
+ A: Please, visit the following link to the plugin documentation. Pay attention to the definition of the new variables as a hash of the values: [Click Here](http://cff.dwbooster.com/documentation#direct-javascript-vars "Create direct variables")
 
625
 
626
+ = Q: How to initialize a date field? =
627
 
628
  A: [Initializing date/time fields](http://cff.dwbooster.com/faq#q220 "FAQ Entry")
629
 
630
  = Q: How to change the language on datepicker? =
631
 
632
+ A: There are different alternatives, directly through the form's structure or uploading a new file to the plugin's folder. Please, visit the following link to read the instructions: [Click Here](http://cff.dwbooster.com/faq#q221 "FAQ Entry")
 
 
633
 
634
  = Q: How to create relationships between date fields? =
635
 
636
+ A: It is possible to define the min date, max date, or select a date dynamically based on the value of another date field.
637
 
638
  [Create relationships between date fields](http://cff.dwbooster.com/documentation#relationship-between-date-fields "Documentation")
639
 
640
+ = Q: Is there a way to format the form in a table structure (various fields in the same line)? =
641
 
642
+ A: Yes, that's possible. Please, read the following post in the plugin's blog: [Formatting the form (distributing the fields in columns)](https://cff.dwbooster.com/blog/2019/01/06/columns/ "Blog")
643
 
644
+ = Q: How to convert a button field into a submit button? =
645
 
646
  A: To convert a button's field in a submit button, enter the following code as its onclick event:
647
 
656
  #fbuilder input[type="radio"],
657
  #fbuilder input[type="checkbox"]{display:none !important;}
658
 
659
+ = Q: How to replace the image displayed in a Media field based on the radio buttons selection? =
660
 
661
+ A: [How to replace the image displayed in a Media Field?](http://cff.dwbooster.com/faq#q266 "FAQ Entry")
662
 
663
+ = Q: In which order the plugin evaluates the equations associated with the calculated fields? =
664
 
665
  A: [Evaluating the equations](http://cff.dwbooster.com/faq#q79 "FAQ Entry")
666
 
670
 
671
  Additional details in the "[PayPal Payment Configuration](https://cff.dwbooster.com/documentation#paypal-settings "PayPal Payment Integration")" section in the documentation page of the plugin.
672
 
673
+ = Q: Non-Latin characters are not displayed in the form. Is there a solution? =
674
 
675
+ A: Please, read the following entry in the plugin's FAQ: [Click Here]](http://cff.dwbooster.com/faq#q225 "utf-8")
676
 
677
+ = Q: The calculated form doesn't appear on the public website. Solution? =
678
 
679
+ A: Please, change the "Script load method" from "Classic" to "Direct" in the "troubleshoot area" located below the forms list in the settings page of the plugin.
680
 
681
+ The optimization plugins are another possible cause of the issue. Please, read additional details in the [FAQ page](https://cff.dwbooster.com/faq#compatibility-with-other-plugins "Compatibility with Other Plugins") of the plugin.
682
 
683
+ = Q: How to create a multipage form? =
684
 
685
+ A: Insert "Page Break" between the fields belonging to different pages.
686
 
687
  = Q: How to display the selected values in the slider control? =
688
 
692
 
693
  A: [Create new validation rules](http://cff.dwbooster.com/documentation#new-validation-rules "New Validation Rules")
694
 
695
+ = Q: How to display a summary of entered data into the form? =
696
 
697
+ A: Insert a summary control in the form, and enter the names of the fields to display in the summary through its settings.
698
 
699
  = Q: How to highlight the fields in the summary control? =
700
 
701
  A: [Highlighting fields](http://cff.dwbooster.com/faq#q229 "FAQ Entry")
702
 
703
+ = Q: Can I display a summary of the fields on the "Thank You" page? =
704
 
705
+ A: Yes, that's possible by using the shortcode for results. Additional details [HERE](https://cff.dwbooster.com/documentation#thanks-page "Thanks page")
706
 
707
  = Q: How can I apply CSS styles to the form fields? =
708
 
709
  A: [Applying CSS styles to the form fields](http://cff.dwbooster.com/faq#q82 "FAQ Entry")
710
 
711
+ = Q: Can I modify any of the predefined templates included with the plugin? =
712
 
713
+ A: Yes, that's possible: [Modifying the predefined templates](http://cff.dwbooster.com/faq#q231 "FAQ Entry")
714
 
715
  = Q: How to create a new template to use with my forms? =
716
 
720
 
721
  A: [Hiding the fields in form](http://cff.dwbooster.com/faq#q232 "FAQ Entry")
722
 
723
+ = Q: Why, after assigning some of the column class names (column2, column3, column4, col-...) to a group of fields, the next field is displaced at right? =
724
 
725
+ A: [You can fix this behavior by inserting a separator field between rows](http://cff.dwbooster.com/faq#q320 "FAQ Entry")
726
 
727
  = Q: How assign multiple class names to a field? =
728
 
729
+ A: The class names are assigned to the fields through the attribute: "Add Css Layout Keywords"
730
+
731
+ To assign multiple class names to a field, you must separate them by space characters. For example, myclass1 myclass2
732
 
733
  = Q: What files can be uploaded through the form? =
734
 
735
+ A: [Accepted files](http://cff.dwbooster.com/faq#q235 "FAQ Entry")
736
 
737
  = Q: How can I include the links to the uploaded files into the notification emails? =
738
 
739
+ A: [Inserting the links to the uploaded files into the notification emails](http://cff.dwbooster.com/faq#q160 "FAQ Entry")
740
 
741
  = Q: Why the form builder is displaying the error message: "The entered data includes invalid characters..."? =
742
 
744
 
745
  = Q: How to use conditional statements in the equations? =
746
 
747
+ A: There are different alternatives to use conditional statements in the equations: [Visit the following link](http://cff.dwbooster.com/faq#q239 "FAQ Entry")
748
 
749
+ = Q: How to print the form only and not the complete page? =
750
 
751
+ A: To print only the form, but not the rest of the page's content, please, follows the instructions in the following link: [Click Here](http://cff.dwbooster.com/documentation#print-form "Documentation")
752
 
753
+ = Q: How to disable the dynamic evaluation of the equations associated with the calculated fields? =
754
 
755
+ A: To disable the dynamic evaluation of the equations in the form, you must untick the checkbox "Eval dynamically the equations associated to the calculated fields" from the "Form Settings" tab of the form builder. After disabling the dynamic evaluation of the equations, you must insert a button field with the "calculate" option as its type. The plugin evaluates the equations by pressing the calculate button.
756
 
757
+ = Q: My company has different departments (like the sales department, the support group, etc.). Can I send a notification email to every department when the form be submitted? =
758
 
759
+ A: Yes, that is possible. You must enter the emails' addresses separated by the comma through the "Destination emails" attribute in the form's settings.
760
 
761
+ = Q: Why the user are not receiving the confirmation emails? =
762
 
763
+ A: If the users are not receiving the notification emails after the form's submission, there are different possible reasons: [please, read about them here](http://cff.dwbooster.com/faq#q241 "FAQ Entry")
764
 
765
+ = Q: How to insert line changes in the notification emails when the HTML format is selected? =
 
 
 
 
 
 
766
 
767
  A: If you are using the HTML format in the notification emails, you should insert BR tags for the lines changes in the emails' contents:
768
 
772
 
773
  A: [Inserting images in the notification emails](http://cff.dwbooster.com/faq#q223 "FAQ Entry")
774
 
775
+ = Q: How to send only specific fields in the notification emails? =
776
 
777
+ A: The notification emails can include all fields submitted by the form (&lt;%INFO%&gt;), or specific fields by using their tags(&lt;%fieldname#%&gt;). Furthermore, there are other tags you can include in the notification emails.
778
 
779
+ Please, visit the following link to get the complete list of tags to include in the email: [Accepted tags](https://cff.dwbooster.com/documentation#special-tags "Special tags in the notification emails and the thank you pages")
780
 
781
+ = Q: How to create dependencies between fields in the notification emails and the thank you pages? =
782
 
783
+ A: Please, read the answer in the FAQ page of the plugin: [Click Here](http://cff.dwbooster.com/faq#q318 "FAQ Entry")
784
 
785
+ = Q: How to implement custom operations? =
786
 
787
+ A: Please, read the answer in the FAQ page of the plugin: [Click Here](http://cff.dwbooster.com/faq#q245 "FAQ Entry")
788
 
789
  = Q: How to calculate the number of words in a text? =
790
 
798
 
799
  A: [Assigning values to the fields from equations](http://cff.dwbooster.com/faq#q248 "FAQ Entry")
800
 
801
+ = Q: How to insert links in the form? =
802
 
803
+ A: The form builder does not include a specific field for links. However, you can insert a link (or any other HTML tag) using an "HTML Content" field. Insert an "HTML Content" field in the form, and enter the anchor tag as its content. For example, to insert a link to our website:
804
 
805
  **&lt;a href="http://cff.dwbooster.com"&gt;Visit the website&lt;/a&gt;**
806
 
807
  = Q: How to define dependencies between fields in the form? =
808
 
809
+ A: Please, read the following post in the plugin's blog: [Click Here](https://cff.dwbooster.com/blog/2020/03/01/dependencies/ "Dependencies")
810
 
811
+ = Q: How to define dependencies with multiple fields? =
812
 
813
+ A: Create dependencies with values of multiple fields requires the use of calculated fields. [Read more](https://cff.dwbooster.com/blog/2020/03/01/dependencies/ "Dependencies")
814
 
815
+ = Q: How to prevent users vary the fields' values for paying less than the calculated price? =
816
 
817
+ A: The form settings include the attribute "Base amount" to define the minimum price allowed. If a user manipulates the calculated field for paying less, the plugin applies the base amount.
818
 
819
+ = Q: How to vary the PayPal product's name from the public form? =
820
 
821
+ A: You can enter the PayPal product's name through the "Paypal product name" attribute in the form's settings. If you enter a field's tag as the product's name, for example, &lt;%fiedname1%&gt; the product's name will be the value submitted by the fieldname1 field.
822
 
823
+ = Q: How to allow to the users decide the payment frequency for recurring payments? =
824
 
825
  A: Follows the instructions below:
826
 
827
  1. Inserts a Radio Button or DropDown field in the form.
828
+ 2. Enters the number of months as the choices' values.
829
+ 3. Selects the "From field" option in the "Payment Frequency" attribute.
830
+ 4. Finally, select the field inserted in the second step from the list beside the "Payment Frequency" attribute.
831
 
832
+ Tip: The maximum number of moFrequencywed by PayPal for recurring payments is 12 months.
833
 
834
+ If you allow the users to select the payment frequency, you must implement the equation to vary the amount based on the payment frequency.
835
 
836
  = Q: How to select a choice in a DropDown field, or Radio Button, based on calculated value? =
837
 
838
+ A: I'll try to describe the process with some hypothetical examples. Assuming the radio button field is fieldname123, and you can select the choice with the value 5, uses the following piece of code as part of the equation associated with the calculated field:
839
 
840
  getField(123).setVal(5);
841
 
851
  = Q: How to use the "DS" fields? =
852
 
853
  A: Please, visit the following post in our technical blog:
854
+ [Click Here](https://cff.dwbooster.com/blog/2019/02/14/ds/ "Using the information stored in a database or CSV file in the form")
855
 
856
+ = Q: In a form with multiple "DS" fields. How to reduce the number of queries to the database? =
857
 
858
+ A: In this case, the recommendation is to use "RecordSet DS" fields as the data source: [Click Here for instructions](https://cff.dwbooster.com/blog/2019/02/14/ds/ "Recordset DS field")
859
 
860
  = Q: How to use the data submitted by a form in another one? =
861
 
869
 
870
  = Q: How do I integrate forms with WooCommerce products? =
871
 
872
+ [Integrating the forms with WooCommerce products](https://cff.dwbooster.com/blog/2018/11/26/woocommerce "WooCommerce")
873
 
874
+ = Q: How to customize the fields displayed on the cart page of WooCommerce? =
875
 
876
  [Customizing the fields in the shopping cart of WooCommerce](http://cff.dwbooster.com/faq#q315 "FAQ Entry")
877
 
878
  = Q: Why the WooCommerce product is not displaying the "Add to Cart" button? =
879
 
880
+ A: You must assign a price to the product through its attribute: "Regular Price" or WooCommerce won't display the "Add to Cart" button.
881
 
882
  = Q: What is SalesForce, and how to create new leads from my forms? =
883
 
891
 
892
  = Q: How to generate a PDF file dynamically with the submitted information? =
893
 
894
+ A: There are multiple alternatives, by using the [PDF generator add-on](https://cff.dwbooster.com/blog/2020/07/19/pdf-generator/ "PDF Generator" ), the [PrintFriendly add-on](https://cff.dwbooster.com/blog/2019/09/19/printfriendly/ "PrintFriendly") or the [WebMerge add-on](https://cff.dwbooster.com/blog/2018/10/15/webmerge/ "WebMerge").
 
895
 
896
+ = Q: How to use an "Upload File field" with multiple selections from Zapier? =
897
 
898
  A: Please, visits the following link to get the answer to your question:
899
  [Click Here](http://cff.dwbooster.com/faq#q274 "FAQ Entry")
903
  A: Please, visits the following link to get the answer to your question:
904
  [Click Here](http://cff.dwbooster.com/faq#q312 "FAQ Entry")
905
 
906
+ = Q: How to protect the form against the attacks of the spambots? =
907
 
908
+ A: Please, follow the instructions described in the plugin's FAQ:
909
  [Click Here](http://cff.dwbooster.com/faq#q313 "FAQ Entry")
910
 
911
+ = Q: I have an issue with the character encoding in the exported CSV files? =
 
 
912
 
913
+ A: Please, follow the steps below:
 
 
 
 
 
 
914
 
915
+ 1. Open Excel.
916
+ 2. Import the data using Data &lt; Import External Data &lt; Import Data.
917
+ 3. Select the file type of "CSV" and browse to your file.
918
+ 4. In the import wizard, change the File_Origin to the related language character identifier.
919
+ 5. Change the Delimiter to the comma if needed.
920
+ 7. Select where to import to and Finish.
921
 
922
  == Screenshots ==
923
 
941
 
942
  == Changelog ==
943
 
944
+ = 1.0.463 =
945
 
946
+ * Fixes a conflict with the latest update of Divi.
947
 
948
+ = 1.0.462 =
949
 
950
+ * Modifies the Slider control. Allow to configure them as read-only and format the typed values.
951
+ * Loads the styles files as soon as possible to fix an issue with the loading form animation.
952
 
953
+ = 1.0.461 =
954
 
955
+ * Modifies the getURLParameter operation.
956
+ * Improves the integration with the Gutenberg editor.
 
957
 
958
+ = 1.0.460 =
959
 
960
+ * Fixes a typo.
 
961
 
962
+ = 1.0.459 =
963
 
964
+ * 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
965
+ * Fixes a compatibility issue with PHP 8.
966
 
967
+ = 1.0.458 =
968
 
969
+ * Modifies the Summary control to allow hiding the empty fields.
970
+ * Improves the errors detection.
971
 
972
+ = 1.0.457 =
973
 
974
+ * The slider fields can be excluded from submission.
975
 
976
+ = 1.0.456 =
977
 
978
+ * Fixes an issue in the date controls.
979
+ * Modifies the CDATE operation.
980
+ * Fixes some conflicts with PHP 8.
981
+ * Adds the EOMONTH operation in the Date/Time operations module (Developer and Platinum versions).
982
 
983
+ = 1.0.455 =
984
 
985
+ * Includes a new option in the form's settings to display a loading form animation.
986
+ * Modifies the tooltips icons.
987
+ * Fixes an issue displaying the tooltips on forms' pages.
988
 
989
+ = 1.0.454 =
990
 
991
+ * Modifies the IGNOREFIELD and ACTIVATEFIELD operations for accepting the form as the second parameter.
992
 
993
  == Upgrade Notice ==
994
 
995
+ = 1.0.463 =
996
 
997
  Important note: If you are using the Professional version don't update via the WP dashboard but using your personal update link. Contact us if you need further information: http://cff.dwbooster.com/contact-us
changelog.txt CHANGED
@@ -1,5 +1,77 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  = 1.0.449 =
4
 
5
  * Modifies the SUM and CONCATENATE operations for accepting plain objects as arguments.
@@ -463,71 +535,4 @@
463
 
464
  = 1.0.363 =
465
 
466
- * Modifies the next/previous page behavior, in multi-pages forms, for jumping pages without active fields.
467
-
468
- = 1.0.362 =
469
-
470
- * Fixes a conflict with third party plugins like MailChimp for WooCommerce.
471
-
472
- = 1.0.361 =
473
-
474
- * Improves the accessibility, duplicating the Preview button over the forms builder.
475
- * Fixes an issue cloning the fields in the forms builder.
476
- * Fixes an issue in the DATEDIFF operation (Developer and Platinum versions of the plugin)
477
- * Modifies the server side code of datasource fields (Developer and Platinum versions of the plugin)
478
-
479
- = 1.0.360 =
480
-
481
- * Fixes an issue in the cffProxy operation.
482
-
483
- = 1.0.359 =
484
-
485
- * Modifies the styles to improve the forms appearance on small screens, when they are configure as left or right aligned.
486
-
487
- = 1.0.358 =
488
-
489
- * Modifies the database structure to allow the implementation of very long forms, with hundreds of fields.
490
-
491
- = 1.0.357 =
492
-
493
- * Fixes an issue in the expanded CSS editor, where the latest rows were being hidden or unaccessible.
494
-
495
- = 1.0.356 =
496
-
497
- * Includes a new icon over the CSS editor in the Form Settings tab, to expand (and collapse) the CSS editor to the viewport size, doing the CSS edition easier.
498
-
499
- = 1.0.355 =
500
-
501
- * Includes the URL Operations Module. The operations in this module allow to obtain the URLs of pages and their parameters, or the redirection to other pages.
502
-
503
- = 1.0.354 =
504
-
505
- * Fixes a possible vulnerability (fortunately only accessible by the website's administator). Many thanks to Ben Armstrong from https://Spider-security.co.uk for the detection of the vulnerability.
506
- * Includes a new method for accessing to the jQuery representation of a field from the equations. Ex: to get the jQuery representation of the fieldname123 field: getField(123).jQueryRef();
507
- * Includes new logs in the dependencies to detect possible issues easier.
508
- * Includes new filters in the notification and confirmation emails, for accessing to the subjects and messages: cpcff_notification_email_subject, cpcff_notification_email_message, cpcff_confirmation_email_subject and cpcff_confirmation_email_message (Professional, Developer, and Platinum versions of the plugin)
509
-
510
- = 1.0.353 =
511
-
512
- * Fixes an issue in the CFFPROXY operation of the Third-party Connection module.
513
-
514
- = 1.0.352 =
515
-
516
- * Modifies the settings of some controls to adjust them to the latest version of WordPress.
517
-
518
- = 1.0.351 =
519
-
520
- * Modifies the module that generates the froms revisions.
521
- * Modifies the MailChimp and EDD modules (Platinum version of the plugin).
522
-
523
- = 1.0.350 =
524
-
525
- * Improves the appearance of the dependencies.
526
- * Modifies the access to the plugin's resources.
527
-
528
- = 1.0.349 =
529
-
530
- * Modifies the calculation's module for triggering the equationsQueueEmpty event when the queue of equations be emptied.
531
- * Modifies the calculate buttons to allow display a calculation in progress indicator until all equations be evaluated.
532
- * Prevents the form be submitted if there are equations pending to be evaluated, even if they dependen on external apis or services (Professional, Developer and Platinum versions of the plugin)
533
- * Modifies the DISTANCE operations module, to tell the plugin the Google Maps APIs are being instantiated, and the evaluation of the equations is pending (Developer and Platinum versions of the plugin)
1
  == Changelog ==
2
 
3
+ = 1.0.463 =
4
+
5
+ * Fixes a conflict with the latest update of Divi.
6
+
7
+ = 1.0.462 =
8
+
9
+ * Modifies the Slider control. Allow to configure them as read-only and format the typed values.
10
+ * Loads the styles files as soon as possible to fix an issue with the loading form animation.
11
+
12
+ = 1.0.461 =
13
+
14
+ * Modifies the getURLParameter operation.
15
+ * Improves the integration with the Gutenberg editor.
16
+
17
+ = 1.0.460 =
18
+
19
+ * Fixes a typo.
20
+
21
+ = 1.0.459 =
22
+
23
+ * 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
24
+ * Fixes a compatibility issue with PHP 8.
25
+
26
+ = 1.0.458 =
27
+
28
+ * Modifies the Summary control to allow hiding the empty fields.
29
+ * Improves the errors detection.
30
+
31
+ = 1.0.457 =
32
+
33
+ * The slider fields can be excluded from submission.
34
+
35
+ = 1.0.456 =
36
+
37
+ * Fixes an issue in the date controls.
38
+ * Modifies the CDATE operation.
39
+ * Fixes some conflicts with PHP 8.
40
+ * Adds the EOMONTH operation in the Date/Time operations module (Developer and Platinum versions).
41
+
42
+ = 1.0.455 =
43
+
44
+ * Includes a new option in the form's settings to display a loading form animation.
45
+ * Modifies the tooltips icons.
46
+ * Fixes an issue displaying the tooltips on forms' pages.
47
+
48
+ = 1.0.454 =
49
+
50
+ * Modifies the IGNOREFIELD and ACTIVATEFIELD operations for accepting the form as the second parameter.
51
+
52
+ = 1.0.453 =
53
+
54
+ * Fixes an issue with the default values in the Phone fields.
55
+ * Implements the IRR operation in the Financial Operations module (Developer and Platinum versions).
56
+ * Includes a new attribute in the CFF - WooCommerce add-on. It allows you to define the product's title in the cart through the form (Developer and Platinum versions).
57
+
58
+ = 1.0.452 =
59
+
60
+ * Fixes an issue in the Slider control synchronizing the typed values and the handle's position.
61
+ * Adds the new method set_step in the number controls.
62
+
63
+ = 1.0.451 =
64
+
65
+ * Fixes an issue with the Slider controls entered manually.
66
+ * Improves the settings of date/time fields.
67
+ * Fixes an issue the DATEDIFF operation (Developer and Platinum versions of the CFF)
68
+
69
+ = 1.0.450 =
70
+
71
+ * Fixes an issue formatting the values in the calculated field.
72
+ * Includes the getIndex method in Radio Buttons, checkbox, and DropDown fields.
73
+ * Implements the integration between the Calculated Fields From and the Appointment Hour Booking (Platinum version of the CFF)
74
+
75
  = 1.0.449 =
76
 
77
  * Modifies the SUM and CONCATENATE operations for accepting plain objects as arguments.
535
 
536
  = 1.0.363 =
537
 
538
+ * Modifies the next/previous page behavior, in multi-pages forms, for jumping pages without active fields.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.0.449
7
  Text Domain: calculated-fields-form
8
  Author: CodePeople
9
  Author URI: https://cff.dwbooster.com
@@ -16,11 +16,15 @@ if(!defined('WP_DEBUG') || true != WP_DEBUG)
16
  }
17
 
18
  // Defining main constants
19
- define('CP_CALCULATEDFIELDSF_VERSION', '1.0.449' );
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 ) );
23
 
 
 
 
 
24
  require_once 'inc/cpcff_auxiliary.inc.php';
25
  require_once 'config/cpcff_config.cfg.php';
26
 
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.0.463
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.0.463' );
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 ) );
23
 
24
+ // Feedback system
25
+ require_once 'feedback/cp-feedback.php';
26
+ new CP_FEEDBACK('calculated-fields-form', __FILE__, 'https://cff.dwbooster.com/contact-us');
27
+
28
  require_once 'inc/cpcff_auxiliary.inc.php';
29
  require_once 'config/cpcff_config.cfg.php';
30
 
css/spinner.gif ADDED
Binary file
css/stylepublic.css CHANGED
@@ -17,6 +17,7 @@
17
  #fbuilder label{white-space:normal;}
18
  #fbuilder label{position:relative;}
19
  #fbuilder .cff-help-icon{clear:none;display:inline-block;vertical-align:middle;margin-left:5px;}
 
20
 
21
  #fbuilder input[type="text"],
22
  #fbuilder input[type="date"],
@@ -452,6 +453,7 @@
452
  }
453
  #fbuilder .cff-dialog{position:fixed;z-index:999999;padding:30px;width:600px;height:300px;background:#fff;top:50%;left:50%;box-shadow:rgba(0, 0, 0, 0.5) 0px 0px 10px 0px;}
454
  #fbuilder .cff-dialog-content{width:100%;height:100%;overflow:auto;white-space:normal;}
 
455
  #fbuilder #loginform label{min-width:250px;display:inline-block;}
456
 
457
  /* ZOOM IPHONE */
17
  #fbuilder label{white-space:normal;}
18
  #fbuilder label{position:relative;}
19
  #fbuilder .cff-help-icon{clear:none;display:inline-block;vertical-align:middle;margin-left:5px;}
20
+ #fbuilder .cff-help-icon::before{width:14px;height:14px;display:block !important;content:"i";font-size:12px !important;font-weight:normal !important;line-height:16px;font-family:Sans-Serif !important;color:#fff !important;background: #1d94ff !important;border-radius:25px !important;text-align:center !important;margin-top:-3px;}
21
 
22
  #fbuilder input[type="text"],
23
  #fbuilder input[type="date"],
453
  }
454
  #fbuilder .cff-dialog{position:fixed;z-index:999999;padding:30px;width:600px;height:300px;background:#fff;top:50%;left:50%;box-shadow:rgba(0, 0, 0, 0.5) 0px 0px 10px 0px;}
455
  #fbuilder .cff-dialog-content{width:100%;height:100%;overflow:auto;white-space:normal;}
456
+ #fbuilder .cff-processing-form{position:fixed; top:calc( 50% - 50px ); left:calc( 50% - 50px ); width:100px; height:100px; background-image:url("spinner.gif");background-size:cover;z-index:99999;}
457
  #fbuilder #loginform label{min-width:250px;display:inline-block;}
458
 
459
  /* ZOOM IPHONE */
feedback/cp-feedback.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if(!class_exists('CP_FEEDBACK'))
3
+ {
4
+ class CP_FEEDBACK
5
+ {
6
+ private $feedback_url = 'https://wordpress.dwbooster.com/licensesystem/debug-data.php';
7
+ private $plugin_slug;
8
+ private $plugin_file;
9
+ private $support_link;
10
+ private $full_support_link;
11
+
12
+ public function __construct($plugin_slug, $plugin_file, $support_link)
13
+ {
14
+ $this->plugin_slug = $plugin_slug;
15
+ $this->plugin_file = $plugin_file;
16
+ $this->support_link = $support_link;
17
+ $this->full_support_link = $support_link.((strpos($support_link, '?') === false) ? '?' : '&' ).'priority-support=yes';
18
+
19
+ // To know when the plugin was installed
20
+ if (!get_option('installed_'.$this->plugin_slug, false))
21
+ {
22
+ update_option('installed_'.$this->plugin_slug, time() );
23
+ }
24
+ // Actions and filters
25
+ add_action( 'admin_enqueue_scripts', array($this, 'enqueue_scripts'), 1);
26
+ add_action( 'wp_ajax_cp_feedback', array($this,'feedback_action'));
27
+ } // End __construct
28
+
29
+ public function enqueue_scripts($hook)
30
+ {
31
+ if( 'plugins.php' == $hook )
32
+ {
33
+ wp_enqueue_style('wp-jquery-ui-dialog');
34
+ wp_enqueue_script('jquery');
35
+ wp_enqueue_script('jquery-ui-dialog');
36
+
37
+ add_action( 'admin_footer', array($this, 'feedback_interface') );
38
+ }
39
+ } // End insert_admin_scripts
40
+
41
+ public function feedback_interface()
42
+ {
43
+ // Varibles to use into the feedback interface
44
+ $plugin_slug = $this->plugin_slug;
45
+ $support_link = $this->support_link;
46
+ $full_support_link = $this->full_support_link;
47
+
48
+ include_once dirname($this->plugin_file).'/feedback/feedback.html';
49
+ } // End feedback_interface
50
+
51
+ // This function is used only if explicitly accepted (opt-in) by the user
52
+ public function feedback_action()
53
+ {
54
+ if(isset($_POST['feedback_plugin']) && $_POST['feedback_plugin'] == $this->plugin_slug)
55
+ {
56
+ $plugin_data = get_plugin_data( $this->plugin_file );
57
+ $plugin_version = $plugin_data['Version'];
58
+ $time = time() - get_option('installed_'.$this->plugin_slug, 0);
59
+
60
+ $data = array(
61
+ 'plugin' => $plugin_data['Name'],
62
+ 'pluginv' => $plugin_version,
63
+ 'wordpress' => get_bloginfo('version'),
64
+ 'itime' => $time,
65
+ 'phpversion' => phpversion()
66
+ );
67
+
68
+ foreach($_POST as $parameter => $value)
69
+ {
70
+ $data[$parameter] = $value;
71
+ }
72
+
73
+ if(!isset($_POST["cp_feedback_anonymous"])) // send this data only if explicitly accepted
74
+ {
75
+ $current_user = wp_get_current_user();
76
+ $data['email'] = $current_user->user_email;
77
+ $data['website'] = $_SERVER['HTTP_HOST'];
78
+ $data['url'] = get_site_url();
79
+ }
80
+
81
+ // Send data
82
+ $response = wp_remote_post(
83
+ $this->feedback_url,
84
+ array(
85
+ 'body' => $data,
86
+ 'sslverify' => false
87
+ )
88
+ );
89
+
90
+ wp_die(); // this is required to terminate immediately and return a proper response
91
+ }
92
+
93
+
94
+ } // End feedback_action
95
+
96
+ } // End class
97
+ }
feedback/feedback.html ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script id="cp_feedback_html<?php print esc_attr($plugin_slug); ?>" type="text/template">
2
+ <div title="QUICK FEEDBACK">
3
+ <div style="padding:10px;">
4
+ <style type="text/css">
5
+ .cp-feedback-reason-block { margin-top:8px; }
6
+ </style>
7
+ <h3><strong>Please let me know the reason why you are deactivating our plugin:</strong></h3>
8
+ <form id="cp_feedback_form{{plugin_slug}}">
9
+ <div class="cp-feedback-reason-block">
10
+ <label>
11
+ <input type="radio" name="answer" value="collect-data">
12
+ I want to receive an email with the data collected by the form.<br />
13
+ </label>
14
+ <div id="cp_feedback_collect_data" style="margin-left:25px;display:none;padding:10px;border:1px dotted gray;color:#660000">
15
+ <p>Please, before deciding to disable the plugin, we recommend that you check the features of its <a href="https://cff.dwbooster.com/download/#comparison" target="_blank">commercial version</a>.</p>
16
+ <p>Or the <a href="https://cff-bundles.dwbooster.com/product/data-collector" target="_blank">Data Collector plugin</a> as an alternative.</p>
17
+ </div>
18
+ </div>
19
+ <div class="cp-feedback-reason-block">
20
+ <label>
21
+ <input type="radio" name="answer" value="temporary-deactivation"> This is a temporary deactivation. I'm just upgrading to the Commercial version or debugging an issue.<br />
22
+ </label>
23
+ </div>
24
+ <div class="cp-feedback-reason-block">
25
+ <label>
26
+ <input type="radio" name="answer" value="better-plugin"> I found a better plugin.<br />
27
+ </label>
28
+ <div id="cp_feedback_otherplugin" style="margin-left:25px;display:none;">
29
+ <input type="text" name="otherplugin" placeholder="Please, enter its name" style="width:100%">
30
+ </div>
31
+ </div>
32
+ <div class="cp-feedback-reason-block">
33
+ <label>
34
+ <input type="radio" name="answer" value="other"> Another reason.<br />
35
+ </label>
36
+ <div id="cp_feedback_other" style="margin-left:25px;display:none;">
37
+ Please, describe the reason so that we can improve our plugin.<br />
38
+ <input type="text" name="otherinfo" style="width:100%">
39
+ </div>
40
+ </div>
41
+ <div id="cp_feedback_anonymous" style="display:none;margin-top:30px;text-align:right">
42
+ <input type="checkbox" name="cp_feedback_anonymous" value="yes"> Anonymous feedback
43
+ </div>
44
+ </form>
45
+ </div>
46
+ </div>
47
+ </script>
48
+ <script type="text/javascript">
49
+ jQuery(window).on(
50
+ 'load',
51
+ function()
52
+ {
53
+ var $ = jQuery,
54
+ plugin_slug = '<?php print esc_js($plugin_slug); ?>',
55
+ support_link = '<?php print esc_js($support_link); ?>',
56
+ full_support_link = '<?php print esc_js($full_support_link); ?>';
57
+ $('[data-slug="'+plugin_slug+'"] .deactivate a').
58
+ on(
59
+ 'click',
60
+ function(evt)
61
+ {
62
+ evt.preventDefault()
63
+ evt.stopPropagation();
64
+ // Define events
65
+ $(document).on(
66
+ 'change',
67
+ '[id="cp_feedback_form'+plugin_slug+'"] [name="answer"]',
68
+ function()
69
+ {
70
+ var field = $(this),
71
+ value = field.val(),
72
+ form = field.closest('form');
73
+ $("#cp_feedback_deactivatebtn:visible").val('Submit & Deactivate');
74
+ $("#cp_feedback_deactivatebtn:visible").html('<span class="ui-button-text">Submit &amp; Deactivate</span>');
75
+ form.find("#cp_feedback_anonymous").show();
76
+ form.find("#cp_feedback_other,#cp_feedback_otherplugin,#cp_feedback_collect_data").hide();
77
+ switch(value)
78
+ {
79
+ case 'other':
80
+ form.find("#cp_feedback_other").show();
81
+ break;
82
+ case 'better-plugin':
83
+ form.find("#cp_feedback_otherplugin").show();
84
+ break;
85
+ case 'collect-data':
86
+ form.find("#cp_feedback_collect_data").show();
87
+ break;
88
+ }
89
+ }
90
+ );
91
+ var url_redirect = $('[data-slug="'+plugin_slug+'"] .deactivate a').attr('href'),
92
+ html = $('[id="cp_feedback_html'+plugin_slug+'"]').html();
93
+ html = html.replace(/\{\{plugin_slug\}\}/g, plugin_slug)
94
+ .replace(/\{\{support_link\}\}/g, full_support_link)
95
+ .replace(/\{\{support_link_text\}\}/g, support_link);
96
+ $(html).dialog(
97
+ {
98
+ width:'600',
99
+ dialogClass: 'wp-dialog',
100
+ modal: true,
101
+ close: function(event, ui)
102
+ {
103
+ $(this).dialog("close");
104
+ $(this).remove();
105
+ },
106
+ closeOnEscape: true,
107
+ buttons: [
108
+ {
109
+ id: 'cp_feedback_deactivatebtn',
110
+ text: "Skip & Deactivate",
111
+ click: function()
112
+ {
113
+ var form = $('[id="cp_feedback_form'+plugin_slug+'"]'),
114
+ answer = form.find("input[name='answer']:checked").val(),
115
+ submitFeedback = function(){
116
+ var data = {
117
+ 'action': 'cp_feedback',
118
+ 'feedback_plugin': plugin_slug
119
+ };
120
+ $.each(form.serializeArray(), function(i,v){data[v['name']] = v['value'];});
121
+ if(ajaxurl) // WordPress global variable with the AJAX URL
122
+ {
123
+ $.post(
124
+ ajaxurl,
125
+ data,
126
+ function(response)
127
+ {
128
+ window.location.href = url_redirect;
129
+ }
130
+ );
131
+ }
132
+ };
133
+
134
+ if (answer == undefined || answer == '')
135
+ {
136
+ window.location.href = url_redirect;
137
+ }
138
+ else
139
+ {
140
+ submitFeedback();
141
+ }
142
+ }
143
+ },
144
+ {
145
+ text: "We can help: Support Service",
146
+ click: function()
147
+ {
148
+ window.open(support_link);
149
+ $(this).dialog("close");
150
+ }
151
+ },
152
+ {
153
+ text: "Cancel",
154
+ "class": 'button button-primary button-close',
155
+ click: function()
156
+ {
157
+ $(this).dialog("close");
158
+ }
159
+ }
160
+ ]
161
+ }
162
+ ); // End dialog
163
+ }
164
+ ); // End onclick deactivate btn
165
+ }
166
+ ); // End onload window
167
+ </script>
inc/cpcff_admin_int_list.inc.php CHANGED
@@ -214,7 +214,9 @@ if ($message) echo "<div id='setting-error-settings_updated' class='updated sett
214
  </div>
215
  </div>
216
  <div style="border:1px solid #F0AD4E;background:#FBE6CA;padding:10px;margin:10px 0;font-size:1.3em;">
217
- <?php _e('For additional resources visit the plugin\'s', 'calculated-fields-form')?> <a href="https://cff-bundles.dwbooster.com" target="_blank" style="font-weight:bold;"><?php _e('Marketplace', 'calculated-fields-form'); ?></a>
 
 
218
  </div>
219
  <div id="metabox_basic_settings" class="postbox" >
220
  <h3 class='hndle' style="padding:5px;"><span><?php _e( 'Troubleshoot Area & General Settings', 'calculated-fields-form' ); ?></span></h3>
214
  </div>
215
  </div>
216
  <div style="border:1px solid #F0AD4E;background:#FBE6CA;padding:10px;margin:10px 0;font-size:1.3em;">
217
+ <div><?php _e('For additional resources visit the plugin\'s', 'calculated-fields-form')?> <a href="https://cff-bundles.dwbooster.com" target="_blank" style="font-weight:bold;"><?php _e('Marketplace', 'calculated-fields-form'); ?></a></div>
218
+ <div class="cff-bundles-plugin"></div>
219
+ <script src="https://cff-bundles.dwbooster.com/plugins/plugins.js"></script>
220
  </div>
221
  <div id="metabox_basic_settings" class="postbox" >
222
  <h3 class='hndle' style="padding:5px;"><span><?php _e( 'Troubleshoot Area & General Settings', 'calculated-fields-form' ); ?></span></h3>
inc/cpcff_main.inc.php CHANGED
@@ -184,6 +184,7 @@ if(!class_exists('CPCFF_MAIN'))
184
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_resources' ), 1 );
185
  }
186
  $this->_define_shortcodes();
 
187
  } // End init
188
 
189
  /**
@@ -403,7 +404,7 @@ if(!class_exists('CPCFF_MAIN'))
403
  {
404
  print '<!DOCTYPE html><html><head profile="http://gmpg.org/xfn/11"><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"></head><body>';
405
  print $message;
406
- print '<style>body>*:not(form){visibility: hidden;} .ui-datepicker,.ui-datepicker *{visibility: visible;}</style></body></html>';
407
  exit;
408
  }
409
  else
@@ -414,6 +415,14 @@ if(!class_exists('CPCFF_MAIN'))
414
  }
415
  } // End form_preview
416
 
 
 
 
 
 
 
 
 
417
  /**
418
  * Returns the public version of the form wih its resources.
419
  *
184
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_resources' ), 1 );
185
  }
186
  $this->_define_shortcodes();
187
+ add_action('wp_enqueue_scripts', array($this, 'enqueue_public_style') );
188
  } // End init
189
 
190
  /**
404
  {
405
  print '<!DOCTYPE html><html><head profile="http://gmpg.org/xfn/11"><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"></head><body>';
406
  print $message;
407
+ print '<style>body>*:not(form){visibility: hidden;} .ui-tooltip, .ui-tooltip *,.ui-datepicker,.ui-datepicker *{visibility: visible;}</style></body></html>';
408
  exit;
409
  }
410
  else
415
  }
416
  } // End form_preview
417
 
418
+ public function enqueue_public_style()
419
+ {
420
+ global $post;
421
+
422
+ if(!empty($post) && has_shortcode($post->post_content, 'CP_CALCULATED_FIELDS'))
423
+ wp_enqueue_style( 'cpcff_stylepublic', plugins_url('/css/stylepublic.css', CP_CALCULATEDFIELDSF_MAIN_FILE_PATH), array(), CP_CALCULATEDFIELDSF_VERSION );
424
+ } // End enqueue_public_style
425
+
426
  /**
427
  * Returns the public version of the form wih its resources.
428
  *
inc/cpcff_public_int.inc.php CHANGED
@@ -50,12 +50,25 @@ if( !empty( $form_data ) )
50
  <form name="<?php echo $form_data[ 1 ][ 'formid' ]; ?>" id="<?php echo $form_data[ 1 ][ 'formid' ]; ?>" action="?" method="post" enctype="multipart/form-data" class="<?php
51
  if(!empty($form_data[1][0]) && !empty($form_data[1][0]->persistence)) echo ' persist-form';
52
  if(!empty($atts) && !empty($atts['class'])) echo ' '.esc_attr($atts['class']);
53
- ?>"><input type="hidden" name="cp_calculatedfieldsf_id" value="<?php echo $id; ?>" /><pre style="display:none !important;"><!--noptimize--><script>form_structure_<?php echo CPCFF_MAIN::$form_counter; ?>=<?php print str_replace( array( "\n", "\r" ), " ", ((version_compare(CP_CFF_PHPVERSION,"5.3.0")>=0)?json_encode($form_data, JSON_HEX_QUOT|JSON_HEX_TAG):json_encode($form_data)) ); ?>;</script><!--/noptimize--></pre>
 
 
54
  <div id="fbuilder">
55
- <div id="fbuilder_<?php echo CPCFF_MAIN::$form_counter; ?>">
56
- <div id="formheader_<?php echo CPCFF_MAIN::$form_counter; ?>"></div>
57
- <div id="fieldlist_<?php echo CPCFF_MAIN::$form_counter; ?>"></div>
58
- </div>
 
 
 
 
 
 
 
 
 
 
 
59
  </div>
60
  <div class="clearer"></div>
61
  </form>
50
  <form name="<?php echo $form_data[ 1 ][ 'formid' ]; ?>" id="<?php echo $form_data[ 1 ][ 'formid' ]; ?>" action="?" method="post" enctype="multipart/form-data" class="<?php
51
  if(!empty($form_data[1][0]) && !empty($form_data[1][0]->persistence)) echo ' persist-form';
52
  if(!empty($atts) && !empty($atts['class'])) echo ' '.esc_attr($atts['class']);
53
+ ?>">
54
+ <input type="hidden" name="cp_calculatedfieldsf_pform_psequence" value="_<?php echo CPCFF_MAIN::$form_counter; ?>" />
55
+ <input type="hidden" name="cp_calculatedfieldsf_id" value="<?php echo $id; ?>" /><pre style="display:none !important;"><!--noptimize--><script>form_structure_<?php echo CPCFF_MAIN::$form_counter; ?>=<?php print str_replace( array( "\n", "\r" ), " ", ((version_compare(CP_CFF_PHPVERSION,"5.3.0")>=0)?json_encode($form_data, JSON_HEX_QUOT|JSON_HEX_TAG):json_encode($form_data)) ); ?>;</script><!--/noptimize--></pre>
56
  <div id="fbuilder">
57
+ <?php
58
+ if(
59
+ !empty($form_data) &&
60
+ !empty($form_data[1]) &&
61
+ !empty($form_data[1][0]) &&
62
+ !empty($form_data[1][0]->loading_animation)
63
+ )
64
+ {
65
+ print '<div class="cff-processing-form"></div>';
66
+ }
67
+ ?>
68
+ <div id="fbuilder_<?php echo CPCFF_MAIN::$form_counter; ?>">
69
+ <div id="formheader_<?php echo CPCFF_MAIN::$form_counter; ?>"></div>
70
+ <div id="fieldlist_<?php echo CPCFF_MAIN::$form_counter; ?>"></div>
71
+ </div>
72
  </div>
73
  <div class="clearer"></div>
74
  </form>
js/fbuilder-loader-public.php CHANGED
@@ -75,11 +75,14 @@ fbuilderjQuery.fbuilderjQueryGenerator = function(){
75
  while(typeof window["cp_calculatedfieldsf_fbuilder_config"+fnum] != 'undefined' || fcount < 10 )
76
  {
77
  try {
78
- var cp_calculatedfieldsf_fbuilder_config = window["cp_calculatedfieldsf_fbuilder_config"+fnum];
79
- var f = $("#fbuilder"+fnum).fbuilder(( typeof cp_calculatedfieldsf_fbuilder_config.obj == 'string' ) ? $.parseJSON(cp_calculatedfieldsf_fbuilder_config.obj) : cp_calculatedfieldsf_fbuilder_config.obj );
80
- f.fBuild.loadData("form_structure"+fnum);
81
- found_form = true;
82
- } catch (e) {}
 
 
 
83
  fcount++;
84
  fnum = "_"+fcount;
85
  }
75
  while(typeof window["cp_calculatedfieldsf_fbuilder_config"+fnum] != 'undefined' || fcount < 10 )
76
  {
77
  try {
78
+ var cp_calculatedfieldsf_fbuilder_config = window["cp_calculatedfieldsf_fbuilder_config"+fnum];
79
+ if(cp_calculatedfieldsf_fbuilder_config)
80
+ {
81
+ var f = $("#fbuilder"+fnum).fbuilder(( typeof cp_calculatedfieldsf_fbuilder_config.obj == 'string' ) ? $.parseJSON(cp_calculatedfieldsf_fbuilder_config.obj) : cp_calculatedfieldsf_fbuilder_config.obj );
82
+ f.fBuild.loadData("form_structure"+fnum);
83
+ found_form = true;
84
+ }
85
+ } catch (e) {if(typeof console != 'undefined') console.log(e);}
86
  fcount++;
87
  fnum = "_"+fcount;
88
  }
js/fbuilder-pro-admin.jquery.js CHANGED
@@ -217,6 +217,12 @@
217
  $.fbuilder.reloadItems({'form':1});
218
  });
219
 
 
 
 
 
 
 
220
  $("#fAutocomplete").click(function()
221
  {
222
  theForm.autocomplete = ($(this).is( ':checked' )) ? 1 : 0;
@@ -533,6 +539,7 @@
533
  formtemplate:"",
534
  evalequations:1,
535
  evalequationsevent:2,
 
536
  autocomplete:1,
537
  persistence:0,
538
  customstyles:"",
@@ -576,7 +583,7 @@
576
  template += '<option value="'+$.fbuilder.showSettings.formTemplateDic[i].prefix+'" ' + selected + '>'+$.fbuilder.showSettings.formTemplateDic[i].title+'</option>';
577
  }
578
 
579
- str += '<div><label>Form Name</label><input class="large" name="fTitle" id="fTitle" value="'+$.fbuilder.htmlEncode(this.title)+'" /></div><div><label>Description</label><textarea class="large" name="fDescription" id="fDescription">'+this.description+'</textarea></div><div><label>Label Placement</label><select name="fLayout" id="fLayout" class="large">'+layout+'</select></div><div><label><input type="checkbox" name="fAutocomplete" id="fAutocomplete" '+( ( this.autocomplete ) ? 'CHECKED' : '' )+' /> Enable autocompletion</label></div><div><label><input type="checkbox" name="fPersistence" id="fPersistence" '+( ( this.persistence ) ? 'CHECKED' : '' )+' /> Enable the browser\'s persistence (the data are stored locally on browser)</label></div>';
580
 
581
  if(typeof $.fbuilder.controls[ 'fCalculated' ] != 'undefined')
582
  {
217
  $.fbuilder.reloadItems({'form':1});
218
  });
219
 
220
+ $("#fLoadingAnimation").click(function()
221
+ {
222
+ theForm.loading_animation = ($(this).is( ':checked' )) ? 1 : 0;
223
+ $.fbuilder.reloadItems({'form':1});
224
+ });
225
+
226
  $("#fAutocomplete").click(function()
227
  {
228
  theForm.autocomplete = ($(this).is( ':checked' )) ? 1 : 0;
539
  formtemplate:"",
540
  evalequations:1,
541
  evalequationsevent:2,
542
+ loading_animation:0,
543
  autocomplete:1,
544
  persistence:0,
545
  customstyles:"",
583
  template += '<option value="'+$.fbuilder.showSettings.formTemplateDic[i].prefix+'" ' + selected + '>'+$.fbuilder.showSettings.formTemplateDic[i].title+'</option>';
584
  }
585
 
586
+ str += '<div><label>Form Name</label><input class="large" name="fTitle" id="fTitle" value="'+$.fbuilder.htmlEncode(this.title)+'" /></div><div><label>Description</label><textarea class="large" name="fDescription" id="fDescription">'+this.description+'</textarea></div><div><label>Label Placement</label><select name="fLayout" id="fLayout" class="large">'+layout+'</select></div><div><label><input type="checkbox" name="fLoadingAnimation" id="fLoadingAnimation" '+( ( this.loading_animation ) ? 'CHECKED' : '' )+' /> Display loading form animation</label></div><div><label><input type="checkbox" name="fAutocomplete" id="fAutocomplete" '+( ( this.autocomplete ) ? 'CHECKED' : '' )+' /> Enable autocompletion</label></div><div><label><input type="checkbox" name="fPersistence" id="fPersistence" '+( ( this.persistence ) ? 'CHECKED' : '' )+' /> Enable the browser\'s persistence (the data are stored locally on browser)</label></div>';
587
 
588
  if(typeof $.fbuilder.controls[ 'fCalculated' ] != 'undefined')
589
  {
js/fbuilder-pro-public.jquery.js CHANGED
@@ -337,7 +337,7 @@
337
  var uh = items[i].jQueryRef();
338
  if(items[i].userhelp && items[i].userhelp.length)
339
  {
340
- if(items[i].tooltipIcon) $('<span class="cff-help-icon ui-icon ui-icon-info"></span>').attr('uh', items[i].userhelp).appendTo($(uh.children('label')[0] || uh));
341
  else $(uh.find(".dfield")[0] || uh).attr('uh', items[i].userhelp);
342
  }
343
  uh.find(".uh").remove();
@@ -450,6 +450,7 @@
450
  'formIdentifier' : opt.identifier
451
  }
452
  );
 
453
  }, 50
454
  );
455
 
@@ -474,6 +475,7 @@
474
  formtemplate:"",
475
  evalequations:1,
476
  evalequationsevent:2,
 
477
  autocomplete:1,
478
  show:function(){
479
  return '<div class="fform" id="field"><h2>'+this.title+'</h2><span>'+this.description+'</span></div>';
337
  var uh = items[i].jQueryRef();
338
  if(items[i].userhelp && items[i].userhelp.length)
339
  {
340
+ if(items[i].tooltipIcon) $('<span class="cff-help-icon"></span>').attr('uh', items[i].userhelp).appendTo($(uh.children('label')[0] || uh));
341
  else $(uh.find(".dfield")[0] || uh).attr('uh', items[i].userhelp);
342
  }
343
  uh.find(".uh").remove();
450
  'formIdentifier' : opt.identifier
451
  }
452
  );
453
+ $('.cff-processing-form').remove();
454
  }, 50
455
  );
456
 
475
  formtemplate:"",
476
  evalequations:1,
477
  evalequationsevent:2,
478
+ loading_animation:0,
479
  autocomplete:1,
480
  show:function(){
481
  return '<div class="fform" id="field"><h2>'+this.title+'</h2><span>'+this.description+'</span></div>';
js/fields-admin/02_fbuilder.fslider.js CHANGED
@@ -13,6 +13,7 @@
13
  title:"Slider",
14
  ftype:"fslider",
15
  exclude:false,
 
16
  predefined:"",
17
  predefinedMin:"",
18
  predefinedMax:"",
@@ -64,6 +65,8 @@
64
  },
65
  showRangeIntance: function()
66
  {
67
- return '<div><div class="column width30"><label>Min</label><input type="text" name="sMin" id="sMin" value="'+$.fbuilder.htmlEncode(this.min)+'" placeholder="0 by default" class="large"></div><div class="column width30"><label>Max</label><input type="text" name="sMax" id="sMax" value="'+$.fbuilder.htmlEncode(this.max)+'" placeholder="100 by default" class="large"></div><div class="column width30"><label>Step</label><input type="text" name="sStep" id="sStep" value="'+$.fbuilder.htmlEncode(this.step)+'" placeholder="1 by default" class="large"></div><div class="clearer" /></div><div style="margin-bottom:10px;"><i>It is possible to associate other fields in the form with the attributes "min", "max" and "step". Ex: fieldname1</i></div><div><input type="checkbox" name="sRange" id="sRange" '+( ( this.range ) ? 'CHECKED' : '' )+' /> Range slider </div><div><label>Field Caption</label><input class="large" type="text" name="sCaption" id="sCaption" value="'+$.fbuilder.htmlEncode( this.caption )+'"></div><div><label>Min Corner Caption</label><input class="large" type="text" name="sMinCaption" id="sMinCaption" value="'+$.fbuilder.htmlEncode( this.minCaption )+'"></div><div><label>Max Corner Caption</label><input class="large" type="text" name="sMaxCaption" id="sMaxCaption" value="'+$.fbuilder.htmlEncode( this.maxCaption )+'"></div><div><label>Symbol for grouping thousands in the field\'s caption(Ex: 3,000,000)</label><input type="text" name="sThousandSeparator" id="sThousandSeparator" class="large" value="'+$.fbuilder.htmlEncode( this.thousandSeparator )+'" /></div><div><label>Decimals separator symbol (Ex: 25.20)</label><input type="text" name="sCentSeparator" id="sCentSeparator" class="large" value="'+$.fbuilder.htmlEncode( this.centSeparator )+'" /></div>';
 
 
68
  }
69
  });
13
  title:"Slider",
14
  ftype:"fslider",
15
  exclude:false,
16
+ readonly:false,
17
  predefined:"",
18
  predefinedMin:"",
19
  predefinedMax:"",
65
  },
66
  showRangeIntance: function()
67
  {
68
+ return $.fbuilder.showSettings.showExclude(this.exclude) +
69
+ $.fbuilder.showSettings.showReadonly(this.readonly) +
70
+ '<div><div class="column width30"><label>Min</label><input type="text" name="sMin" id="sMin" value="'+$.fbuilder.htmlEncode(this.min)+'" placeholder="0 by default" class="large"></div><div class="column width30"><label>Max</label><input type="text" name="sMax" id="sMax" value="'+$.fbuilder.htmlEncode(this.max)+'" placeholder="100 by default" class="large"></div><div class="column width30"><label>Step</label><input type="text" name="sStep" id="sStep" value="'+$.fbuilder.htmlEncode(this.step)+'" placeholder="1 by default" class="large"></div><div class="clearer" /></div><div style="margin-bottom:10px;"><i>It is possible to associate other fields in the form with the attributes "min", "max" and "step". Ex: fieldname1</i></div><div><input type="checkbox" name="sRange" id="sRange" '+( ( this.range ) ? 'CHECKED' : '' )+' /> Range slider </div><div><label>Field Caption</label><input class="large" type="text" name="sCaption" id="sCaption" value="'+$.fbuilder.htmlEncode( this.caption )+'"></div><div><label>Min Corner Caption</label><input class="large" type="text" name="sMinCaption" id="sMinCaption" value="'+$.fbuilder.htmlEncode( this.minCaption )+'"></div><div><label>Max Corner Caption</label><input class="large" type="text" name="sMaxCaption" id="sMaxCaption" value="'+$.fbuilder.htmlEncode( this.maxCaption )+'"></div><div><label>Symbol for grouping thousands in the field\'s caption(Ex: 3,000,000)</label><input type="text" name="sThousandSeparator" id="sThousandSeparator" class="large" value="'+$.fbuilder.htmlEncode( this.thousandSeparator )+'" /></div><div><label>Decimals separator symbol (Ex: 25.20)</label><input type="text" name="sCentSeparator" id="sCentSeparator" class="large" value="'+$.fbuilder.htmlEncode( this.centSeparator )+'" /></div>';
71
  }
72
  });
js/fields-admin/04_fbuilder.fdate.js CHANGED
@@ -108,7 +108,7 @@
108
  for (var i in me.separators)
109
  separatorOpts += '<option value="'+me.separators[i]+'" '+((me.separators[i]==me.dseparator)?"selected":"")+'>'+me.separators[i]+'</option>';
110
 
111
- return '<hr></hr><label><input type="checkbox" name="sShowDatepicker" id="sShowDatepicker" '+( ( me.showDatepicker ) ? 'CHECKED' : '' )+' > Show input field for the date</label><div class="width50 column"><label>Date Format</label><select name="sFormat" id="sFormat" class="large">'+formatOpts+'</select></div><div class="width50 column"><label>Parts separator</label><select name="sSeparator" id="sSeparator" class="large">'+separatorOpts+'</select></div><div class="clearer" />';
112
  },
113
  showSpecialDataInstance: function()
114
  {
108
  for (var i in me.separators)
109
  separatorOpts += '<option value="'+me.separators[i]+'" '+((me.separators[i]==me.dseparator)?"selected":"")+'>'+me.separators[i]+'</option>';
110
 
111
+ return '<hr></hr><label><input type="checkbox" name="sShowDatepicker" id="sShowDatepicker" '+( ( me.showDatepicker ) ? 'CHECKED' : '' )+' > Show input field for the date</label><div class="width50 column"><label>Date Format</label><select name="sFormat" id="sFormat" class="large">'+formatOpts+'</select></div><div class="width50 column"><label>Parts separator</label><select name="sSeparator" id="sSeparator" class="large">'+separatorOpts+'</select></div><div class="clearer"></div>';
112
  },
113
  showSpecialDataInstance: function()
114
  {
js/fields-admin/16_fbuilder.fsummary.js CHANGED
@@ -12,6 +12,7 @@
12
  {
13
  title:"Summary",
14
  ftype:"fsummary",
 
15
  fields:"",
16
  titleClassname:"summary-field-title",
17
  valueClassname:"summary-field-value",
@@ -23,6 +24,7 @@
23
  {
24
  var evt = [
25
  {s:"#sFields",e:"change keyup", l:"fields"},
 
26
  {s:"#sTitleClassname",e:"change keyup", l:"titleClassname"},
27
  {s:"#sValueClassname",e:"change keyup", l:"valueClassname"},
28
  {s:"#sPlusBtn",e:"click", l:"fields",f:function(){
@@ -54,6 +56,7 @@
54
  str += '<option value="'+items[i].name+'">'+( ( typeof items[i].title != 'undefined' ) ? items[i].title : '' )+'('+items[i].name+')'+'</option>';
55
  }
56
  str += '</select><div style="margin-top:10px;"><input type="button" value="+" name="sPlusBtn" id="sPlusBtn" style="padding:3px 10px;" /></div>'+
 
57
  '<label>Classname for fields titles</label><input type="text" class="large" name="sTitleClassname" id="sTitleClassname" value="'+$.fbuilder.htmlEncode(this.titleClassname)+'">'+
58
  '<label>Classname for fields values</label><input type="text" class="large" name="sValueClassname" id="sValueClassname" value="'+$.fbuilder.htmlEncode(this.valueClassname)+'">';
59
 
12
  {
13
  title:"Summary",
14
  ftype:"fsummary",
15
+ exclude_empty:false,
16
  fields:"",
17
  titleClassname:"summary-field-title",
18
  valueClassname:"summary-field-value",
24
  {
25
  var evt = [
26
  {s:"#sFields",e:"change keyup", l:"fields"},
27
+ {s:"#sExcludeEmpty",e:"click", l:"exclude_empty", f:function(el){return el.is(':checked');}},
28
  {s:"#sTitleClassname",e:"change keyup", l:"titleClassname"},
29
  {s:"#sValueClassname",e:"change keyup", l:"valueClassname"},
30
  {s:"#sPlusBtn",e:"click", l:"fields",f:function(){
56
  str += '<option value="'+items[i].name+'">'+( ( typeof items[i].title != 'undefined' ) ? items[i].title : '' )+'('+items[i].name+')'+'</option>';
57
  }
58
  str += '</select><div style="margin-top:10px;"><input type="button" value="+" name="sPlusBtn" id="sPlusBtn" style="padding:3px 10px;" /></div>'+
59
+ '<label>Exclude empty fields: <input type="checkbox" id="sExcludeEmpty" name="sExcludeEmpty" '+((this.exclude_empty) ? 'CHECKED' : '')+'/></label>'+
60
  '<label>Classname for fields titles</label><input type="text" class="large" name="sTitleClassname" id="sTitleClassname" value="'+$.fbuilder.htmlEncode(this.titleClassname)+'">'+
61
  '<label>Classname for fields values</label><input type="text" class="large" name="sValueClassname" id="sValueClassname" value="'+$.fbuilder.htmlEncode(this.valueClassname)+'">';
62
 
js/fields-admin/fbuilder.fcalculated.js CHANGED
@@ -22,6 +22,7 @@
22
  decimalsymbol:".",
23
  groupingsymbol:"",
24
  readonly:true,
 
25
  noEvalIfManual:true,
26
  formatDynamically:false,
27
  hidefield:false,
@@ -46,6 +47,7 @@
46
  {s:"#sHideField",e:"click", l:"hidefield", f:function(el){return el.is(':checked');}},
47
  {s:"#sFormatDynamically",e:"click", l:"formatDynamically", f:function(el){return el.is(':checked');}},
48
  {s:"#sNoEvalIfManual",e:"click", l:"noEvalIfManual", f:function(el){return el.is(':checked');}},
 
49
  {s:"#sSize",e:"change", l:"size"}
50
  ];
51
  $("#sEq").bind("change keyup", {obj: this}, function(e)
@@ -266,7 +268,7 @@
266
  },
267
  showFormatDynamically:function()
268
  {
269
- return '<label><input type="checkbox" name="sFormatDynamically" id="sFormatDynamically" '+((this.hidefield)?"checked":"")+'> If editable, format dynamically</label>';
270
  },
271
  showHideField:function()
272
  {
@@ -380,7 +382,7 @@
380
  out += '<option value="' + fName + '">'+item[ 'name' ] + ( ( item[ 'title' ] && !/^\s*$/.test( item[ 'title' ] ) ) ? '('+item[ 'title' ] + ')' : '' ) + '</option>';
381
  }
382
  }
383
- out += ' </select><input type="button" value="+" class="eq_btn" onclick="'+tools+'.setField();" /></div><label>Operators</label><div style="text-align:center;" class="groupBox"><div style="text-align:left;">'+$.fbuilder.controls[ 'fCalculated' ][ 'tools' ].loadToolbarList()+'<span id="sEqModuleTutorial">'+$.fbuilder.controls[ 'fCalculated' ][ 'tools' ].loadTutorial( default_toolbar )+'</span></div><div id="sEqButtonsContainer" style="margin-top:10px;">'+$.fbuilder.controls[ 'fCalculated' ][ 'tools' ].loadToolbar( default_toolbar )+'</div><div id="sEqTipsContainer" style="background-color:#DFEFFF;border:1px solid #C2D7EF;padding:5px;margin:5px;display:none;text-align:left;"></div></div><label>Symbol to display at beginning of calculated field</label><input type="text" name="sPrefix" id="sPrefix" class="large" value="'+$.fbuilder.htmlEncode(me.prefix)+'" /><label>Symbol to display at the end of calculated field</label><input type="text" name="sSuffix" id="sSuffix" class="large" value="'+$.fbuilder.htmlEncode(me.suffix)+'" /><label>Decimals separator symbol (Ex: 25.20)</label><input type="text" name="sDecimalSymbol" id="sDecimalSymbol" class="large" value="'+$.fbuilder.htmlEncode(me.decimalsymbol)+'" /><label>Symbol for grouping thousands (Ex: 3,000,000)</label><input type="text" name="sGroupingSymbol" id="sGroupingSymbol" class="large" value="'+$.fbuilder.htmlEncode(me.groupingsymbol)+'" />';
384
 
385
  return out;
386
  }
22
  decimalsymbol:".",
23
  groupingsymbol:"",
24
  readonly:true,
25
+ currency:false,
26
  noEvalIfManual:true,
27
  formatDynamically:false,
28
  hidefield:false,
47
  {s:"#sHideField",e:"click", l:"hidefield", f:function(el){return el.is(':checked');}},
48
  {s:"#sFormatDynamically",e:"click", l:"formatDynamically", f:function(el){return el.is(':checked');}},
49
  {s:"#sNoEvalIfManual",e:"click", l:"noEvalIfManual", f:function(el){return el.is(':checked');}},
50
+ {s:"#sCurrency",e:"click", l:"currency", f:function(el){return el.is(':checked');}},
51
  {s:"#sSize",e:"change", l:"size"}
52
  ];
53
  $("#sEq").bind("change keyup", {obj: this}, function(e)
268
  },
269
  showFormatDynamically:function()
270
  {
271
+ return '<label><input type="checkbox" name="sFormatDynamically" id="sFormatDynamically" '+((this.formatDynamically)?"checked":"")+'> If editable, format dynamically</label>';
272
  },
273
  showHideField:function()
274
  {
382
  out += '<option value="' + fName + '">'+item[ 'name' ] + ( ( item[ 'title' ] && !/^\s*$/.test( item[ 'title' ] ) ) ? '('+item[ 'title' ] + ')' : '' ) + '</option>';
383
  }
384
  }
385
+ out += '</select><input type="button" value="+" class="eq_btn" onclick="'+tools+'.setField();" /></div><label>Operators</label><div style="text-align:center;" class="groupBox"><div style="text-align:left;">'+$.fbuilder.controls[ 'fCalculated' ][ 'tools' ].loadToolbarList()+'<span id="sEqModuleTutorial">'+$.fbuilder.controls[ 'fCalculated' ][ 'tools' ].loadTutorial( default_toolbar )+'</span></div><div id="sEqButtonsContainer" style="margin-top:10px;">'+$.fbuilder.controls[ 'fCalculated' ][ 'tools' ].loadToolbar( default_toolbar )+'</div><div id="sEqTipsContainer" style="background-color:#DFEFFF;border:1px solid #C2D7EF;padding:5px;margin:5px;display:none;text-align:left;"></div></div><label>Symbol to display at beginning of calculated field</label><input type="text" name="sPrefix" id="sPrefix" class="large" value="'+$.fbuilder.htmlEncode(me.prefix)+'" /><label><input type="checkbox" id="sCurrency" name="sCurrency" '+((me.currency) ? 'CHECKED' : '')+' /> it is a currency</label><label>Symbol to display at the end of calculated field</label><input type="text" name="sSuffix" id="sSuffix" class="large" value="'+$.fbuilder.htmlEncode(me.suffix)+'" /><label>Decimals separator symbol (Ex: 25.20)</label><input type="text" name="sDecimalSymbol" id="sDecimalSymbol" class="large" value="'+$.fbuilder.htmlEncode(me.decimalsymbol)+'" /><label>Symbol for grouping thousands (Ex: 3,000,000)</label><input type="text" name="sGroupingSymbol" id="sGroupingSymbol" class="large" value="'+$.fbuilder.htmlEncode(me.groupingsymbol)+'" />';
386
 
387
  return out;
388
  }
js/fields-public/02_fbuilder.fnumber.js CHANGED
@@ -16,6 +16,18 @@
16
  max:"",
17
  formatDynamically:false,
18
  dformat:"digits",
 
 
 
 
 
 
 
 
 
 
 
 
19
  set_min:function(v, rmv)
20
  {
21
  var e = $('[id="'+this.name+'"]');
16
  max:"",
17
  formatDynamically:false,
18
  dformat:"digits",
19
+ set_step:function(v, rmv)
20
+ {
21
+ var e = $('[id="'+this.name+'"]');
22
+ if(rmv) e.removeAttr('step');
23
+ else {
24
+ var vb = e.val();
25
+ e.removeAttr('value');
26
+ e.attr('step', v);
27
+ e.val(vb);
28
+ }
29
+ e.valid();
30
+ },
31
  set_min:function(v, rmv)
32
  {
33
  var e = $('[id="'+this.name+'"]');
js/fields-public/02_fbuilder.fslider.js CHANGED
@@ -5,6 +5,8 @@
5
  {
6
  title:"Slider",
7
  ftype:"fslider",
 
 
8
  predefined:"",
9
  predefinedMin:"",
10
  predefinedMax:"",
@@ -61,8 +63,8 @@
61
  vlf = me._setThousandsSeparator(vl),
62
  vrf = me._setThousandsSeparator(vr);
63
 
64
- $('#'+me.name+'_component_left').val(vl);
65
- $('#'+me.name+'_component_right').val(vr);
66
  $('#'+me.name).val('['+vl+','+vr+']').attr('vt', '['+vlf+','+vrf+']');
67
  $('#'+me.name+'_caption').html(
68
  me.caption
@@ -75,7 +77,7 @@
75
  var v = $('#'+me.name+'_slider').slider('value'),
76
  vf = me._setThousandsSeparator(v);
77
  $('#'+me.name).val(v).attr('vt', vf);
78
- $('#'+me.name+'_component_center').val(v);
79
  $('#'+me.name+'_caption').html(
80
  me.caption.replace(/\{\s*0\s*\}/, vf)
81
  );
@@ -111,19 +113,36 @@
111
  ),
112
  timeoutId;
113
 
114
- $(document).on('keyup change', '#'+me.name+'_component_'+c, function(){
115
  var v = $('#'+me.name+'_component_center').val(),
116
  v1 = $('#'+me.name+'_component_left').val(),
117
- v2 = $('#'+me.name+'_component_right').val();
 
118
  clearTimeout(timeoutId);
 
119
  timeoutId = setTimeout(function(){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  $('#'+me.name+'_slider').slider(
121
  ((v != undefined) ? 'value' : 'values'),
122
  ((v != undefined) ? v*1 : [Math.min(v1*1,v2*1), Math.max(v1*1,v2*1)])
123
  );
124
- me._setFieldValue();}, 500);
125
  });
126
- return '<div class="slider-type-'+c+'-component"><input aria-label="'+$.fbuilder.htmlEncode(me.title)+'" id="'+me.name+'_component_'+c+'" class="large" type="number" value="'+predefined+'" min="'+min+'" max="'+max+'" step="'+step+'" /></div>';
127
  };
128
 
129
  var str = '';
@@ -222,6 +241,8 @@
222
  }
223
  else opt[ 'value' ] = Math.min( Math.max( me._getAttr('predefined'), opt.min ), opt.max );
224
 
 
 
225
  opt[ 'slide' ] = opt[ 'stop' ] = ( function( e ){
226
  return function( event, ui )
227
  {
5
  {
6
  title:"Slider",
7
  ftype:"fslider",
8
+ exclude:false,
9
+ readonly:false,
10
  predefined:"",
11
  predefinedMin:"",
12
  predefinedMax:"",
63
  vlf = me._setThousandsSeparator(vl),
64
  vrf = me._setThousandsSeparator(vr);
65
 
66
+ $('#'+me.name+'_component_left').val(vlf);
67
+ $('#'+me.name+'_component_right').val(vrf);
68
  $('#'+me.name).val('['+vl+','+vr+']').attr('vt', '['+vlf+','+vrf+']');
69
  $('#'+me.name+'_caption').html(
70
  me.caption
77
  var v = $('#'+me.name+'_slider').slider('value'),
78
  vf = me._setThousandsSeparator(v);
79
  $('#'+me.name).val(v).attr('vt', vf);
80
+ $('#'+me.name+'_component_center').val(vf);
81
  $('#'+me.name+'_caption').html(
82
  me.caption.replace(/\{\s*0\s*\}/, vf)
83
  );
113
  ),
114
  timeoutId;
115
 
116
+ $(document).on('keyup change', '#'+me.name+'_component_'+c, function(evt){
117
  var v = $('#'+me.name+'_component_center').val(),
118
  v1 = $('#'+me.name+'_component_left').val(),
119
+ v2 = $('#'+me.name+'_component_right').val(),
120
+ t = 0;
121
  clearTimeout(timeoutId);
122
+ if(evt.type == 'keyup') t = 2000;
123
  timeoutId = setTimeout(function(){
124
+ if(v != undefined)
125
+ {
126
+ v = $.fbuilder.parseVal( v, this.thousandSeparator, this.centSeparator );
127
+ if(isNaN(v)) v = 0;
128
+ }
129
+ if(v1 != undefined)
130
+ {
131
+ v1 = $.fbuilder.parseVal( v1, this.thousandSeparator, this.centSeparator );
132
+ if(isNaN(v1)) v1 = 0;
133
+ }
134
+ if(v2 != undefined)
135
+ {
136
+ v2 = $.fbuilder.parseVal( v2, this.thousandSeparator, this.centSeparator );
137
+ if(isNaN(v2)) v2 = 0;
138
+ }
139
  $('#'+me.name+'_slider').slider(
140
  ((v != undefined) ? 'value' : 'values'),
141
  ((v != undefined) ? v*1 : [Math.min(v1*1,v2*1), Math.max(v1*1,v2*1)])
142
  );
143
+ me._setFieldValue();}, t);
144
  });
145
+ return '<div class="slider-type-'+c+'-component"><input aria-label="'+$.fbuilder.htmlEncode(me.title)+'" id="'+me.name+'_component_'+c+'" class="large" type="text" value="'+predefined+'" '+((me.readonly) ? 'readonly' : '')+' /></div>';
146
  };
147
 
148
  var str = '';
241
  }
242
  else opt[ 'value' ] = Math.min( Math.max( me._getAttr('predefined'), opt.min ), opt.max );
243
 
244
+ opt['disabled'] = me.readonly;
245
+
246
  opt[ 'slide' ] = opt[ 'stop' ] = ( function( e ){
247
  return function( event, ui )
248
  {
js/fields-public/04_fbuilder.fdate.js CHANGED
@@ -369,7 +369,7 @@
369
  if(raw) return $.fbuilder.parseValStr(v, raw);
370
 
371
  v = $.trim(e.val());
372
- var re = new RegExp( o.r+'(\\s(\\d{1,2})[:\\.](\\d{1,2})\s*([amp]{2})?)?' ),
373
  d = re.exec( v ),
374
  h = 0,
375
  m = 0,
@@ -377,31 +377,37 @@
377
 
378
  if( d )
379
  {
380
- if( typeof d[ 5 ] != 'undefined' ) h = d[ 5 ]*1;
381
- if( typeof d[ 6 ] != 'undefined' ) m = d[ 6 ]*1;
382
- if( typeof d[ 7 ] != 'undefined' )
383
  {
384
- var am = d[ 7 ].toLowerCase();
385
  if(am == 'pm' && h < 12 ) h += 12;
386
  if(am == 'am' && h == 12) h -= 12;
387
  }
388
  switch( o.d )
389
  {
390
  case 'yyyy/dd/mm':
391
- date = new Date( d[ 1 ], ( d[ 3 ] * 1 - 1 ), d[ 2 ], h, m, 0, 0 );
392
  break;
393
  case 'yyyy/mm/dd':
394
- date = new Date( d[ 1 ], ( d[ 2 ] * 1 - 1 ), d[ 3 ], h, m, 0, 0 );
395
  break;
396
  case 'dd/mm/yyyy':
397
- date = new Date( d[ 3 ], ( d[ 2 ] * 1 - 1 ), d[ 1 ], h, m, 0, 0 );
398
  break;
399
  case 'mm/dd/yyyy':
400
- date = new Date( d[ 3 ], ( d[ 1 ] * 1 - 1 ), d[ 2 ], h, m, 0, 0 );
401
  break;
402
  }
403
- if( me.showTimepicker ) return date.valueOf() / 86400000;
404
- else return Math.ceil( date.valueOf() / 86400000 );
 
 
 
 
 
 
405
  }
406
  }
407
  return 0;
369
  if(raw) return $.fbuilder.parseValStr(v, raw);
370
 
371
  v = $.trim(e.val());
372
+ var re = new RegExp( '('+o.r+')?(\\s*(\\d{1,2})[:\\.](\\d{1,2})\\s*([amp]{2})?)?' ),
373
  d = re.exec( v ),
374
  h = 0,
375
  m = 0,
377
 
378
  if( d )
379
  {
380
+ if( typeof d[ 6 ] != 'undefined' ) h = d[ 6 ]*1;
381
+ if( typeof d[ 7 ] != 'undefined' ) m = d[ 7 ]*1;
382
+ if( typeof d[ 8 ] != 'undefined' )
383
  {
384
+ var am = d[ 8 ].toLowerCase();
385
  if(am == 'pm' && h < 12 ) h += 12;
386
  if(am == 'am' && h == 12) h -= 12;
387
  }
388
  switch( o.d )
389
  {
390
  case 'yyyy/dd/mm':
391
+ date = new Date( d[ 2 ], ( d[ 4 ] * 1 - 1 ), d[ 3 ], h, m, 0, 0 );
392
  break;
393
  case 'yyyy/mm/dd':
394
+ date = new Date( d[ 2 ], ( d[ 3 ] * 1 - 1 ), d[ 4 ], h, m, 0, 0 );
395
  break;
396
  case 'dd/mm/yyyy':
397
+ date = new Date( d[ 4 ], ( d[ 3 ] * 1 - 1 ), d[ 2 ], h, m, 0, 0 );
398
  break;
399
  case 'mm/dd/yyyy':
400
+ date = new Date( d[ 4 ], ( d[ 2 ] * 1 - 1 ), d[ 3 ], h, m, 0, 0 );
401
  break;
402
  }
403
+
404
+ if(isFinite(date))
405
+ {
406
+ if( me.showTimepicker ) return date.valueOf() / 86400000;
407
+ else return Math.ceil( date.valueOf() / 86400000 );
408
+ }
409
+ else if(!me.showDatepicker && me.showTimepicker)
410
+ return (h*3600000+m*60000)/86400000;
411
  }
412
  }
413
  return 0;
js/fields-public/06_fbuilder.fcheck.js CHANGED
@@ -153,6 +153,12 @@
153
  if(ipb) e.find('input').addClass('ignorepb');
154
  this.setVal(bk);
155
  }
 
 
 
 
 
 
156
  }
157
  }
158
  );
153
  if(ipb) e.find('input').addClass('ignorepb');
154
  this.setVal(bk);
155
  }
156
+ },
157
+ getIndex:function()
158
+ {
159
+ var i = [];
160
+ $('[name*="'+this.name+'"]').each(function(j,v){if(this.checked){i.push(j);}});
161
+ return i;
162
  }
163
  }
164
  );
js/fields-public/07_fbuilder.fradio.js CHANGED
@@ -144,6 +144,12 @@
144
  if(ipb) e.find('input').addClass('ignorepb');
145
  this.setVal(bk);
146
  }
 
 
 
 
 
 
147
  }
148
  }
149
  );
144
  if(ipb) e.find('input').addClass('ignorepb');
145
  this.setVal(bk);
146
  }
147
+ },
148
+ getIndex:function()
149
+ {
150
+ var i = -1;
151
+ $('[name*="'+this.name+'"]').each(function(j,v){if(this.checked){i = j; return false;}});
152
+ return i;
153
  }
154
  }
155
  );
js/fields-public/08_fbuilder.fdropdown.js CHANGED
@@ -170,6 +170,16 @@
170
  if(ipb) e.find('select').addClass('ignorepb');
171
  this.setVal(bk);
172
  }
 
 
 
 
 
 
 
 
 
 
173
  }
174
  }
175
  );
170
  if(ipb) e.find('select').addClass('ignorepb');
171
  this.setVal(bk);
172
  }
173
+ },
174
+ getIndex:function()
175
+ {
176
+ var f = $('[name*="'+this.name+'"]');
177
+ if(this.multiple){
178
+ var i = [];
179
+ f.find('option').each(function(j,v){if(this.selected) i.push(j);});
180
+ return i;
181
+ }
182
+ else return f[0].selectedIndex;
183
  }
184
  }
185
  );
js/fields-public/11_fbuilder.fphone.js CHANGED
@@ -34,7 +34,7 @@
34
  }
35
  }
36
 
37
- return '<div class="fields '+this.csslayout+' '+this.name+' cff-phone-field" id="field'+this.form_identifier+'-'+this.index+'"><label for="'+this.name+'">'+this.title+''+((this.required)?"<span class='r'>*</span>":"")+'</label><div class="dfield"><input type="hidden" id="'+this.name+'" name="'+this.name+'" class="field " />'+str+'<span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
38
  },
39
  after_show: function()
40
  {
@@ -71,11 +71,10 @@
71
  }
72
  }
73
  },
74
- val:function(raw)
75
  {
76
- raw = raw || false;
77
  var e = $( '[id="' + this.name + '"]:not(.ignore)' ),
78
- p = $.fbuilder.parseValStr( e.val(), raw );
79
 
80
  if( e.length ) return ($.isNumeric(p)) ? '"'+p+'"' : p;
81
  return 0;
34
  }
35
  }
36
 
37
+ return '<div class="fields '+this.csslayout+' '+this.name+' cff-phone-field" id="field'+this.form_identifier+'-'+this.index+'"><label for="'+this.name+'">'+this.title+''+((this.required)?"<span class='r'>*</span>":"")+'</label><div class="dfield"><input type="hidden" id="'+this.name+'" name="'+this.name+'" class="field " '+attr+'="'+tmpv.join('')+'" />'+str+'<span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
38
  },
39
  after_show: function()
40
  {
71
  }
72
  }
73
  },
74
+ val:function()
75
  {
 
76
  var e = $( '[id="' + this.name + '"]:not(.ignore)' ),
77
+ p = $.fbuilder.parseValStr(e.val(), true);
78
 
79
  if( e.length ) return ($.isNumeric(p)) ? '"'+p+'"' : p;
80
  return 0;
js/fields-public/16_fbuilder.fsummary.js CHANGED
@@ -6,6 +6,7 @@
6
  title:"Summary",
7
  ftype:"fsummary",
8
  fields:"",
 
9
  titleClassname:"summary-field-title",
10
  valueClassname:"summary-field-value",
11
  fieldsArray:[],
@@ -116,10 +117,11 @@
116
  }
117
  }
118
  );
119
-
120
  tt.find( '.cff-summary-title' )[(/^\s*$/.test(t)) ? 'hide' : 'show']().html(t);
121
- tt.find( '.cff-summary-value' ).html( v.join( ', ' ) );
122
- if( e.hasClass( 'ignore' ) )
 
123
  {
124
  tt.hide();
125
  }
6
  title:"Summary",
7
  ftype:"fsummary",
8
  fields:"",
9
+ exclude_empty: false,
10
  titleClassname:"summary-field-title",
11
  valueClassname:"summary-field-value",
12
  fieldsArray:[],
117
  }
118
  }
119
  );
120
+ v = v.join(', ');
121
  tt.find( '.cff-summary-title' )[(/^\s*$/.test(t)) ? 'hide' : 'show']().html(t);
122
+ tt.find( '.cff-summary-value' ).html( v );
123
+
124
+ if( e.hasClass( 'ignore' ) || (this.exclude_empty && v == ''))
125
  {
126
  tt.hide();
127
  }
js/fields-public/fbuilder.fcalculated.js CHANGED
@@ -15,6 +15,7 @@
15
  groupingsymbol:"",
16
  dependencies:[ {'rule' : '', 'complex' : false, 'fields' : [ '' ] } ],
17
  readonly:true,
 
18
  noEvalIfManual:true,
19
  formatDynamically:false,
20
  hidefield:false,
@@ -27,7 +28,7 @@
27
  {
28
  // Add equations
29
  var me = this,
30
- configuration = { "suffix" : me.suffix, "prefix" : me.prefix, "groupingsymbol" : me.groupingsymbol, "decimalsymbol" : me.decimalsymbol },
31
  dependencies = [];
32
 
33
  $.each( me.dependencies, function( i, d )
@@ -75,9 +76,12 @@
75
  );
76
  }
77
  }
78
- ).on('change', function(){
79
- if(!me.readonly && me.formatDynamically)
 
 
80
  {
 
81
  var v = me.val();
82
  this.value = $.fbuilder.calculator.format(v, configuration);
83
  }
@@ -497,13 +501,13 @@
497
  },
498
  format : function( value, config )
499
  {
500
- if( !/^\s*$/.test( value ) )
501
  {
 
502
  if( $.isNumeric( value ) && !/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)/.test( value ) )
503
  {
504
-
505
- var symbol = ( value < 0 ) ? '-' : '',
506
- parts = value.toString().replace( "-", "" ).split("."),
507
  counter = 0,
508
  str = '';
509
 
@@ -518,17 +522,23 @@
518
  parts[0] = str;
519
  }
520
 
521
- value = symbol+parts.join( config.decimalsymbol );
522
  }
523
 
524
  if( config.prefix )
525
  {
526
- value = config.prefix + value;
 
 
 
 
 
527
  }
528
  if( config.suffix )
529
  {
530
  value += config.suffix;
531
  }
 
532
  }
533
  return value;
534
  },
15
  groupingsymbol:"",
16
  dependencies:[ {'rule' : '', 'complex' : false, 'fields' : [ '' ] } ],
17
  readonly:true,
18
+ currency:false,
19
  noEvalIfManual:true,
20
  formatDynamically:false,
21
  hidefield:false,
28
  {
29
  // Add equations
30
  var me = this,
31
+ configuration = { "suffix" : me.suffix, "prefix" : me.prefix, "groupingsymbol" : me.groupingsymbol, "decimalsymbol" : me.decimalsymbol, "currency": me.currency },
32
  dependencies = [];
33
 
34
  $.each( me.dependencies, function( i, d )
76
  );
77
  }
78
  }
79
+ ).on('keyup', function(){
80
+ me.manual = true;
81
+ }).on('change', function(){
82
+ if('manual' in me && me.manual && me.formatDynamically)
83
  {
84
+ me.manual = false;
85
  var v = me.val();
86
  this.value = $.fbuilder.calculator.format(v, configuration);
87
  }
501
  },
502
  format : function( value, config )
503
  {
504
+ if( !/^\s*$/.test( value ) )
505
  {
506
+ var symbol = '';
507
  if( $.isNumeric( value ) && !/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)/.test( value ) )
508
  {
509
+ if( value < 0 ) symbol = '-';
510
+ var parts = value.toString().replace( "-", "" ).split("."),
 
511
  counter = 0,
512
  str = '';
513
 
522
  parts[0] = str;
523
  }
524
 
525
+ value = parts.join( config.decimalsymbol );
526
  }
527
 
528
  if( config.prefix )
529
  {
530
+ if(!config.currency)
531
+ {
532
+ value = symbol + value;
533
+ symbol = '';
534
+ }
535
+ value = config.prefix + value;
536
  }
537
  if( config.suffix )
538
  {
539
  value += config.suffix;
540
  }
541
+ value = symbol+value;
542
  }
543
  return value;
544
  },
js/modules/01_mathematical_logical/public/module_public.js CHANGED
@@ -91,17 +91,17 @@ fbuilderjQuery[ 'fbuilder' ][ 'modules' ][ 'default' ] = {
91
 
92
  if(isFinite(num*1))
93
  {
 
94
  num = Math.round(num*86400000);
95
-
96
  var date = new Date(num),
97
- d = date.getDate(),
98
- m = date.getMonth()+1,
99
- y = date.getFullYear(),
100
  h = date.getHours(),
101
  i = date.getMinutes(),
102
  s = date.getSeconds(),
103
  a = '';
104
-
105
  m = (m < 10) ? '0'+m : m;
106
  d = (d < 10) ? '0'+d : d;
107
 
91
 
92
  if(isFinite(num*1))
93
  {
94
+ var time_only = (num<1);
95
  num = Math.round(num*86400000);
96
+ if(time_only) num += (new Date(2021,01,01,0,0,0,0)).valueOf();
97
  var date = new Date(num),
98
+ d = (time_only) ? 0 : date.getDate(),
99
+ m = (time_only) ? 0 : date.getMonth()+1,
100
+ y = (time_only) ? 0 : date.getFullYear(),
101
  h = date.getHours(),
102
  i = date.getMinutes(),
103
  s = date.getSeconds(),
104
  a = '';
 
105
  m = (m < 10) ? '0'+m : m;
106
  d = (d < 10) ? '0'+d : d;
107
 
js/modules/05_managing_fields/public/05_managing_fields.js CHANGED
@@ -15,6 +15,8 @@
15
  function _getForm(_form)
16
  {
17
  if(typeof _form == 'undefined') return '_1';
 
 
18
  return $(_form).find('[name="cp_calculatedfieldsf_pform_psequence"]').val();
19
  }
20
 
15
  function _getForm(_form)
16
  {
17
  if(typeof _form == 'undefined') return '_1';
18
+ if(/^_\d*$/.test(_form)) return _form;
19
+ if(/^\d*$/.test(_form)) return '_'+_form;
20
  return $(_form).find('[name="cp_calculatedfieldsf_pform_psequence"]').val();
21
  }
22
 
js/modules/08_url/public/01_url.js CHANGED
@@ -111,7 +111,7 @@
111
  var parameters = lib.getURLParameters();
112
  paramName = paramName.toLowerCase();
113
  if(paramName in parameters) return parameters[paramName];
114
- else if(defaultValue) return defaultValue;
115
  else return null;
116
  }
117
 
111
  var parameters = lib.getURLParameters();
112
  paramName = paramName.toLowerCase();
113
  if(paramName in parameters) return parameters[paramName];
114
+ else if(typeof defaultValue != 'undefined') return defaultValue;
115
  else return null;
116
  }
117
 
languages/calculated-fields-form-en_US.mo CHANGED
Binary file
languages/calculated-fields-form-en_US.po CHANGED
@@ -1,25 +1,25 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: \n"
4
- "POT-Creation-Date: 2020-11-19 13:41+0100\n"
5
- "PO-Revision-Date: 2020-11-19 13:41+0100\n"
6
  "Last-Translator: CodePeople\n"
7
  "Language-Team: \n"
8
  "Language: en_US\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 2.4.2\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
  "X-Poedit-KeywordsList: __;_e;esc_attr__;esc_attr_e\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
 
18
- #: cp_calculatedfieldsf_free.php:74
19
  msgid "Form Preview"
20
  msgstr ""
21
 
22
- #: cp_calculatedfieldsf_free.php:109
23
  msgid ""
24
  "<div class=\"error-text\">The data cannot be stored in database because has "
25
  "occurred an error with the database structure. Please, go to the plugins "
@@ -28,7 +28,7 @@ msgid ""
28
  "please <a href=\"https://cff.dwbooster.com/contact-us\">contact us</a></div>"
29
  msgstr ""
30
 
31
- #: cp_calculatedfieldsf_free.php:125
32
  msgid ""
33
  "<div class=\"error-text\">The data cannot be stored in database because has "
34
  "occurred an error with the form structure. Please, try to save the data "
@@ -41,7 +41,7 @@ msgstr ""
41
  msgid "Settings saved"
42
  msgstr ""
43
 
44
- #: inc/cpcff_admin_int.inc.php:50 inc/cpcff_admin_int_list.inc.php:95
45
  #: inc/cpcff_page_builders.inc.php:155
46
  #: pagebuilders/beaverbuilder/cff/cff/cff.php:9
47
  #: pagebuilders/beaverbuilder/cff/cff/cff.php:11
@@ -208,7 +208,7 @@ msgstr ""
208
  msgid "To insert this form in a post/page, use the dedicated icon"
209
  msgstr ""
210
 
211
- #: inc/cpcff_admin_int.inc.php:316 inc/cpcff_main.inc.php:237
212
  msgid "Insert Calculated Fields Form"
213
  msgstr ""
214
 
@@ -219,12 +219,12 @@ msgid ""
219
  msgstr ""
220
 
221
  #: inc/cpcff_admin_int.inc.php:326 inc/cpcff_admin_int.inc.php:624
222
- #: inc/cpcff_admin_int_list.inc.php:262
223
  msgid "Request Custom Modifications"
224
  msgstr ""
225
 
226
  #: inc/cpcff_admin_int.inc.php:326 inc/cpcff_admin_int.inc.php:624
227
- #: inc/cpcff_admin_int_list.inc.php:262 inc/cpcff_main.inc.php:220
228
  msgid "Help"
229
  msgstr ""
230
 
@@ -296,7 +296,7 @@ msgstr ""
296
  msgid "Valid until"
297
  msgstr ""
298
 
299
- #: inc/cpcff_admin_int.inc.php:376 inc/cpcff_admin_int_list.inc.php:206
300
  msgid "Add"
301
  msgstr ""
302
 
@@ -516,181 +516,181 @@ msgstr ""
516
  msgid "Font"
517
  msgstr ""
518
 
519
- #: inc/cpcff_admin_int_list.inc.php:21
520
  msgid "Item added"
521
  msgstr ""
522
 
523
- #: inc/cpcff_admin_int_list.inc.php:27
524
  msgid "Item updated"
525
  msgstr ""
526
 
527
- #: inc/cpcff_admin_int_list.inc.php:33
528
  msgid "Item deleted"
529
  msgstr ""
530
 
531
- #: inc/cpcff_admin_int_list.inc.php:37
532
  msgid "Item duplicated/cloned"
533
  msgstr ""
534
 
535
- #: inc/cpcff_admin_int_list.inc.php:38
536
  msgid "Duplicate/Clone Error, the form cannot be cloned"
537
  msgstr ""
538
 
539
- #: inc/cpcff_admin_int_list.inc.php:87
540
  msgid "Troubleshoot settings updated"
541
  msgstr ""
542
 
543
- #: inc/cpcff_admin_int_list.inc.php:141
544
  msgid "Are you sure that you want to delete this item?"
545
  msgstr ""
546
 
547
- #: inc/cpcff_admin_int_list.inc.php:149
548
  msgid "Are you sure that you want to update these settings?"
549
  msgstr ""
550
 
551
- #: inc/cpcff_admin_int_list.inc.php:165
552
  msgid "Form List / Items List"
553
  msgstr ""
554
 
555
- #: inc/cpcff_admin_int_list.inc.php:170
556
  msgid "ID"
557
  msgstr ""
558
 
559
- #: inc/cpcff_admin_int_list.inc.php:170
560
  msgid "Form Name"
561
  msgstr ""
562
 
563
- #: inc/cpcff_admin_int_list.inc.php:170
564
  msgid "Options"
565
  msgstr ""
566
 
567
- #: inc/cpcff_admin_int_list.inc.php:170
568
  msgid "Shortcode"
569
  msgstr ""
570
 
571
- #: inc/cpcff_admin_int_list.inc.php:184
572
  msgid "Update"
573
  msgstr ""
574
 
575
- #: inc/cpcff_admin_int_list.inc.php:185 inc/cpcff_main.inc.php:218
576
  msgid "Settings"
577
  msgstr ""
578
 
579
- #: inc/cpcff_admin_int_list.inc.php:186
580
  msgid "Messages"
581
  msgstr ""
582
 
583
- #: inc/cpcff_admin_int_list.inc.php:187
584
  msgid "Clone"
585
  msgstr ""
586
 
587
- #: inc/cpcff_admin_int_list.inc.php:188
588
  msgid "Delete"
589
  msgstr ""
590
 
591
- #: inc/cpcff_admin_int_list.inc.php:201
592
  msgid "New Form"
593
  msgstr ""
594
 
595
- #: inc/cpcff_admin_int_list.inc.php:205
596
  msgid "Item Name"
597
  msgstr ""
598
 
599
- #: inc/cpcff_admin_int_list.inc.php:212
600
  msgid "For additional resources visit the plugin's"
601
  msgstr ""
602
 
603
- #: inc/cpcff_admin_int_list.inc.php:212
604
  msgid "Marketplace"
605
  msgstr ""
606
 
607
- #: inc/cpcff_admin_int_list.inc.php:215
608
  msgid "Troubleshoot Area & General Settings"
609
  msgstr ""
610
 
611
- #: inc/cpcff_admin_int_list.inc.php:226
612
  msgid ""
613
  "<strong>Important!</strong>: Use this area <strong>only</strong> if you are "
614
  "experiencing conflicts with third party plugins, with the theme scripts or "
615
  "with the character encoding."
616
  msgstr ""
617
 
618
- #: inc/cpcff_admin_int_list.inc.php:227
619
  msgid "Script load method"
620
  msgstr ""
621
 
622
- #: inc/cpcff_admin_int_list.inc.php:229
623
  msgid "Classic (Recommended)"
624
  msgstr ""
625
 
626
- #: inc/cpcff_admin_int_list.inc.php:230
627
  msgid "Direct"
628
  msgstr ""
629
 
630
- #: inc/cpcff_admin_int_list.inc.php:232
631
  msgid ""
632
  "* Change the script load method if the form doesn't appear in the public "
633
  "website."
634
  msgstr ""
635
 
636
- #: inc/cpcff_admin_int_list.inc.php:234
637
  msgid "Character encoding"
638
  msgstr ""
639
 
640
- #: inc/cpcff_admin_int_list.inc.php:236
641
  msgid "Keep current charset (Recommended)"
642
  msgstr ""
643
 
644
- #: inc/cpcff_admin_int_list.inc.php:237
645
  msgid "try this first"
646
  msgstr ""
647
 
648
- #: inc/cpcff_admin_int_list.inc.php:238
649
  msgid "Only from MySQL 5.5"
650
  msgstr ""
651
 
652
- #: inc/cpcff_admin_int_list.inc.php:241
653
  msgid ""
654
  "* Update the charset if you are getting problems displaying special/non-"
655
  "latin characters. After updated you need to edit the special characters "
656
  "again."
657
  msgstr ""
658
 
659
- #: inc/cpcff_admin_int_list.inc.php:243
660
  msgid "There is active an optimization plugin in WordPress"
661
  msgstr ""
662
 
663
- #: inc/cpcff_admin_int_list.inc.php:244
664
  msgid ""
665
  "* Tick the checkbox if there is an optimization plugin active on the "
666
  "website, and the forms are not visible."
667
  msgstr ""
668
 
669
- #: inc/cpcff_admin_int_list.inc.php:247
670
  msgid "Activate Javascript Cache"
671
  msgstr ""
672
 
673
- #: inc/cpcff_admin_int_list.inc.php:249
674
  msgid "Allows to access the forms directly"
675
  msgstr ""
676
 
677
- #: inc/cpcff_admin_int_list.inc.php:251
678
  msgid "Allows to access the forms from amp pages"
679
  msgstr ""
680
 
681
- #: inc/cpcff_admin_int_list.inc.php:253
682
  msgid "Do not load the forms with crawlers"
683
  msgstr ""
684
 
685
- #: inc/cpcff_admin_int_list.inc.php:253
686
  msgid "* The forms are not loaded when website is being indexed by searchers."
687
  msgstr ""
688
 
689
- #: inc/cpcff_admin_int_list.inc.php:255
690
  msgid "UPDATE"
691
  msgstr ""
692
 
693
- #: inc/cpcff_admin_int_list.inc.php:262 inc/cpcff_main.inc.php:219
694
  msgid "Upgrade"
695
  msgstr ""
696
 
@@ -742,11 +742,11 @@ msgid ""
742
  "settings."
743
  msgstr ""
744
 
745
- #: inc/cpcff_main.inc.php:217
746
  msgid "Request custom changes"
747
  msgstr ""
748
 
749
- #: inc/cpcff_main.inc.php:237
750
  msgid "Create a JavaScript var from POST, GET, SESSION, or COOKIE var"
751
  msgstr ""
752
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2021-05-03 16:03+0200\n"
5
+ "PO-Revision-Date: 2021-05-03 16:03+0200\n"
6
  "Last-Translator: CodePeople\n"
7
  "Language-Team: \n"
8
  "Language: en_US\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.4.3\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
  "X-Poedit-KeywordsList: __;_e;esc_attr__;esc_attr_e\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
 
18
+ #: cp_calculatedfieldsf_free.php:78
19
  msgid "Form Preview"
20
  msgstr ""
21
 
22
+ #: cp_calculatedfieldsf_free.php:113
23
  msgid ""
24
  "<div class=\"error-text\">The data cannot be stored in database because has "
25
  "occurred an error with the database structure. Please, go to the plugins "
28
  "please <a href=\"https://cff.dwbooster.com/contact-us\">contact us</a></div>"
29
  msgstr ""
30
 
31
+ #: cp_calculatedfieldsf_free.php:129
32
  msgid ""
33
  "<div class=\"error-text\">The data cannot be stored in database because has "
34
  "occurred an error with the form structure. Please, try to save the data "
41
  msgid "Settings saved"
42
  msgstr ""
43
 
44
+ #: inc/cpcff_admin_int.inc.php:50 inc/cpcff_admin_int_list.inc.php:100
45
  #: inc/cpcff_page_builders.inc.php:155
46
  #: pagebuilders/beaverbuilder/cff/cff/cff.php:9
47
  #: pagebuilders/beaverbuilder/cff/cff/cff.php:11
208
  msgid "To insert this form in a post/page, use the dedicated icon"
209
  msgstr ""
210
 
211
+ #: inc/cpcff_admin_int.inc.php:316 inc/cpcff_main.inc.php:238
212
  msgid "Insert Calculated Fields Form"
213
  msgstr ""
214
 
219
  msgstr ""
220
 
221
  #: inc/cpcff_admin_int.inc.php:326 inc/cpcff_admin_int.inc.php:624
222
+ #: inc/cpcff_admin_int_list.inc.php:269
223
  msgid "Request Custom Modifications"
224
  msgstr ""
225
 
226
  #: inc/cpcff_admin_int.inc.php:326 inc/cpcff_admin_int.inc.php:624
227
+ #: inc/cpcff_admin_int_list.inc.php:269 inc/cpcff_main.inc.php:221
228
  msgid "Help"
229
  msgstr ""
230
 
296
  msgid "Valid until"
297
  msgstr ""
298
 
299
+ #: inc/cpcff_admin_int.inc.php:376 inc/cpcff_admin_int_list.inc.php:211
300
  msgid "Add"
301
  msgstr ""
302
 
516
  msgid "Font"
517
  msgstr ""
518
 
519
+ #: inc/cpcff_admin_int_list.inc.php:26
520
  msgid "Item added"
521
  msgstr ""
522
 
523
+ #: inc/cpcff_admin_int_list.inc.php:32
524
  msgid "Item updated"
525
  msgstr ""
526
 
527
+ #: inc/cpcff_admin_int_list.inc.php:38
528
  msgid "Item deleted"
529
  msgstr ""
530
 
531
+ #: inc/cpcff_admin_int_list.inc.php:42
532
  msgid "Item duplicated/cloned"
533
  msgstr ""
534
 
535
+ #: inc/cpcff_admin_int_list.inc.php:43
536
  msgid "Duplicate/Clone Error, the form cannot be cloned"
537
  msgstr ""
538
 
539
+ #: inc/cpcff_admin_int_list.inc.php:92
540
  msgid "Troubleshoot settings updated"
541
  msgstr ""
542
 
543
+ #: inc/cpcff_admin_int_list.inc.php:146
544
  msgid "Are you sure that you want to delete this item?"
545
  msgstr ""
546
 
547
+ #: inc/cpcff_admin_int_list.inc.php:154
548
  msgid "Are you sure that you want to update these settings?"
549
  msgstr ""
550
 
551
+ #: inc/cpcff_admin_int_list.inc.php:170
552
  msgid "Form List / Items List"
553
  msgstr ""
554
 
555
+ #: inc/cpcff_admin_int_list.inc.php:175
556
  msgid "ID"
557
  msgstr ""
558
 
559
+ #: inc/cpcff_admin_int_list.inc.php:175
560
  msgid "Form Name"
561
  msgstr ""
562
 
563
+ #: inc/cpcff_admin_int_list.inc.php:175
564
  msgid "Options"
565
  msgstr ""
566
 
567
+ #: inc/cpcff_admin_int_list.inc.php:175
568
  msgid "Shortcode"
569
  msgstr ""
570
 
571
+ #: inc/cpcff_admin_int_list.inc.php:189
572
  msgid "Update"
573
  msgstr ""
574
 
575
+ #: inc/cpcff_admin_int_list.inc.php:190 inc/cpcff_main.inc.php:219
576
  msgid "Settings"
577
  msgstr ""
578
 
579
+ #: inc/cpcff_admin_int_list.inc.php:191
580
  msgid "Messages"
581
  msgstr ""
582
 
583
+ #: inc/cpcff_admin_int_list.inc.php:192
584
  msgid "Clone"
585
  msgstr ""
586
 
587
+ #: inc/cpcff_admin_int_list.inc.php:193
588
  msgid "Delete"
589
  msgstr ""
590
 
591
+ #: inc/cpcff_admin_int_list.inc.php:206
592
  msgid "New Form"
593
  msgstr ""
594
 
595
+ #: inc/cpcff_admin_int_list.inc.php:210
596
  msgid "Item Name"
597
  msgstr ""
598
 
599
+ #: inc/cpcff_admin_int_list.inc.php:217
600
  msgid "For additional resources visit the plugin's"
601
  msgstr ""
602
 
603
+ #: inc/cpcff_admin_int_list.inc.php:217
604
  msgid "Marketplace"
605
  msgstr ""
606
 
607
+ #: inc/cpcff_admin_int_list.inc.php:222
608
  msgid "Troubleshoot Area & General Settings"
609
  msgstr ""
610
 
611
+ #: inc/cpcff_admin_int_list.inc.php:233
612
  msgid ""
613
  "<strong>Important!</strong>: Use this area <strong>only</strong> if you are "
614
  "experiencing conflicts with third party plugins, with the theme scripts or "
615
  "with the character encoding."
616
  msgstr ""
617
 
618
+ #: inc/cpcff_admin_int_list.inc.php:234
619
  msgid "Script load method"
620
  msgstr ""
621
 
622
+ #: inc/cpcff_admin_int_list.inc.php:236
623
  msgid "Classic (Recommended)"
624
  msgstr ""
625
 
626
+ #: inc/cpcff_admin_int_list.inc.php:237
627
  msgid "Direct"
628
  msgstr ""
629
 
630
+ #: inc/cpcff_admin_int_list.inc.php:239
631
  msgid ""
632
  "* Change the script load method if the form doesn't appear in the public "
633
  "website."
634
  msgstr ""
635
 
636
+ #: inc/cpcff_admin_int_list.inc.php:241
637
  msgid "Character encoding"
638
  msgstr ""
639
 
640
+ #: inc/cpcff_admin_int_list.inc.php:243
641
  msgid "Keep current charset (Recommended)"
642
  msgstr ""
643
 
644
+ #: inc/cpcff_admin_int_list.inc.php:244
645
  msgid "try this first"
646
  msgstr ""
647
 
648
+ #: inc/cpcff_admin_int_list.inc.php:245
649
  msgid "Only from MySQL 5.5"
650
  msgstr ""
651
 
652
+ #: inc/cpcff_admin_int_list.inc.php:248
653
  msgid ""
654
  "* Update the charset if you are getting problems displaying special/non-"
655
  "latin characters. After updated you need to edit the special characters "
656
  "again."
657
  msgstr ""
658
 
659
+ #: inc/cpcff_admin_int_list.inc.php:250
660
  msgid "There is active an optimization plugin in WordPress"
661
  msgstr ""
662
 
663
+ #: inc/cpcff_admin_int_list.inc.php:251
664
  msgid ""
665
  "* Tick the checkbox if there is an optimization plugin active on the "
666
  "website, and the forms are not visible."
667
  msgstr ""
668
 
669
+ #: inc/cpcff_admin_int_list.inc.php:254
670
  msgid "Activate Javascript Cache"
671
  msgstr ""
672
 
673
+ #: inc/cpcff_admin_int_list.inc.php:256
674
  msgid "Allows to access the forms directly"
675
  msgstr ""
676
 
677
+ #: inc/cpcff_admin_int_list.inc.php:258
678
  msgid "Allows to access the forms from amp pages"
679
  msgstr ""
680
 
681
+ #: inc/cpcff_admin_int_list.inc.php:260
682
  msgid "Do not load the forms with crawlers"
683
  msgstr ""
684
 
685
+ #: inc/cpcff_admin_int_list.inc.php:260
686
  msgid "* The forms are not loaded when website is being indexed by searchers."
687
  msgstr ""
688
 
689
+ #: inc/cpcff_admin_int_list.inc.php:262
690
  msgid "UPDATE"
691
  msgstr ""
692
 
693
+ #: inc/cpcff_admin_int_list.inc.php:269 inc/cpcff_main.inc.php:220
694
  msgid "Upgrade"
695
  msgstr ""
696
 
742
  "settings."
743
  msgstr ""
744
 
745
+ #: inc/cpcff_main.inc.php:218
746
  msgid "Request custom changes"
747
  msgstr ""
748
 
749
+ #: inc/cpcff_main.inc.php:238
750
  msgid "Create a JavaScript var from POST, GET, SESSION, or COOKIE var"
751
  msgstr ""
752
 
pagebuilders/divi/cff.pb.php CHANGED
@@ -56,7 +56,7 @@ class CFF_DIVI extends ET_Builder_Module
56
  );
57
  }
58
 
59
- public function render($unprocessed_props, $content = null, $render_slug)
60
  {
61
  $output = '';
62
  $form = @intval($this->props['cff_form_id']);
56
  );
57
  }
58
 
59
+ public function render($unprocessed_props, $content = null, $render_slug = '')
60
  {
61
  $output = '';
62
  $form = @intval($this->props['cff_form_id']);
pagebuilders/gutenberg/assets/js/gutenberg.js CHANGED
@@ -134,73 +134,80 @@ jQuery(function()
134
  {
135
  key: 'cpcff_inspector'
136
  },
137
- [
138
- el(
139
- 'span',
140
- {
141
- key: 'cpcff_inspector_help',
142
- style:{fontStyle: 'italic'}
143
- },
144
- 'If you need help: '
145
- ),
146
- el(
147
- 'a',
148
- {
149
- key : 'cpcff_inspector_help_link',
150
- href : 'https://cff.dwbooster.com/documentation#insertion-page',
151
- target : '_blank'
152
- },
153
- 'CLICK HERE'
154
- ),
155
- el(
156
- 'hr',
157
- {
158
- key : 'cpcff_inspector_separator'
159
- }
160
- ),
161
- el(
162
- 'label',
163
- {
164
- key : 'cpcff_inspector_forms_label'
165
- },
166
- cpcff_gutenberg_editor_config['labels']['forms']
167
- ),
168
- el(
169
- 'select',
170
- {
171
- key : 'cpcff_inspector_forms_list',
172
- style : {width: '100%'},
173
- onChange : set_attributes,
174
- value: id
175
- },
176
- options
177
- ),
178
- el(
179
- 'label',
180
- {
181
- key : 'cpcff_inspector_attributes_label'
182
- },
183
- cpcff_gutenberg_editor_config['labels']['attributes']
184
- ),
185
- el(
186
- 'input',
187
- {
188
- type : 'text',
189
- key : 'cpcff_inspector_text',
190
- value : get_addtional_atts(),
191
- onChange : set_attributes,
192
- style: {width:"100%"}
193
- }
194
- ),
195
- el(
196
- 'span',
197
- {
198
- key : 'cpcff_inspector_attributes_help',
199
- style:{fontStyle: 'italic'}
200
- },
201
- 'variable_name="value"'
202
- )
203
- ]
 
 
 
 
 
 
 
204
  )
205
  );
206
  }
@@ -240,25 +247,32 @@ jQuery(function()
240
  {
241
  key: 'cpcff_inspector'
242
  },
243
- [
244
- el(
245
- 'span',
246
- {
247
- key: 'cpcff_inspector_help',
248
- style:{fontStyle: 'italic'}
249
- },
250
- 'If you need help: '
251
- ),
252
- el(
253
- 'a',
254
- {
255
- key : 'cpcff_inspector_help_link',
256
- href : 'https://cff.dwbooster.com/documentation#javascript-variables',
257
- target : '_blank'
258
- },
259
- 'CLICK HERE'
260
- )
261
- ]
 
 
 
 
 
 
 
262
  ),
263
  el(
264
  'textarea',
134
  {
135
  key: 'cpcff_inspector'
136
  },
137
+ el(
138
+ 'div',
139
+ {
140
+ key: 'cpcff_inspector_container',
141
+ style:{paddingLeft:'20px',paddingRight:'20px'}
142
+ },
143
+ [
144
+ el(
145
+ 'span',
146
+ {
147
+ key: 'cpcff_inspector_help',
148
+ style:{fontStyle: 'italic'}
149
+ },
150
+ 'If you need help: '
151
+ ),
152
+ el(
153
+ 'a',
154
+ {
155
+ key : 'cpcff_inspector_help_link',
156
+ href : 'https://cff.dwbooster.com/documentation#insertion-page',
157
+ target : '_blank'
158
+ },
159
+ 'CLICK HERE'
160
+ ),
161
+ el(
162
+ 'hr',
163
+ {
164
+ key : 'cpcff_inspector_separator'
165
+ }
166
+ ),
167
+ el(
168
+ 'label',
169
+ {
170
+ key : 'cpcff_inspector_forms_label'
171
+ },
172
+ cpcff_gutenberg_editor_config['labels']['forms']
173
+ ),
174
+ el(
175
+ 'select',
176
+ {
177
+ key : 'cpcff_inspector_forms_list',
178
+ style : {width: '100%'},
179
+ onChange : set_attributes,
180
+ value: id
181
+ },
182
+ options
183
+ ),
184
+ el(
185
+ 'label',
186
+ {
187
+ key : 'cpcff_inspector_attributes_label'
188
+ },
189
+ cpcff_gutenberg_editor_config['labels']['attributes']
190
+ ),
191
+ el(
192
+ 'input',
193
+ {
194
+ type : 'text',
195
+ key : 'cpcff_inspector_text',
196
+ value : get_addtional_atts(),
197
+ onChange : set_attributes,
198
+ style: {width:"100%"}
199
+ }
200
+ ),
201
+ el(
202
+ 'span',
203
+ {
204
+ key : 'cpcff_inspector_attributes_help',
205
+ style:{fontStyle: 'italic'}
206
+ },
207
+ 'variable_name="value"'
208
+ )
209
+ ]
210
+ )
211
  )
212
  );
213
  }
247
  {
248
  key: 'cpcff_inspector'
249
  },
250
+ el(
251
+ 'div',
252
+ {
253
+ key: 'cpcff_inspector_container',
254
+ style:{paddingLeft:'20px',paddingRight:'20px'}
255
+ },
256
+ [
257
+ el(
258
+ 'span',
259
+ {
260
+ key: 'cpcff_inspector_help',
261
+ style:{fontStyle: 'italic'}
262
+ },
263
+ 'If you need help: '
264
+ ),
265
+ el(
266
+ 'a',
267
+ {
268
+ key : 'cpcff_inspector_help_link',
269
+ href : 'https://cff.dwbooster.com/documentation#javascript-variables',
270
+ target : '_blank'
271
+ },
272
+ 'CLICK HERE'
273
+ )
274
+ ]
275
+ )
276
  ),
277
  el(
278
  'textarea',