Calculated Fields Form - Version 1.0.306

Version Description

  • Modifies the autocomplete module to include the requirements of latest versions of browsers.
  • Modifies the slider control to circumvent some errors caused by invalid values entered by the form creator.
  • Includes the Chart.js operations module to integrate ChartJS in the form (Developer and Platinum versions of the plugin)
Download this release

Release Info

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

Code changes from version 1.0.290 to 1.0.306

Files changed (46) hide show
  1. README.txt +137 -148
  2. changelog.txt +74 -0
  3. config/cpcff_config.cfg.php +3 -2
  4. cp_calculatedfieldsf_free.php +2 -2
  5. css/style.css +12 -1
  6. css/stylepublic.css +19 -11
  7. inc/cpcff_admin_int.inc.php +1 -0
  8. inc/cpcff_auxiliary.inc.php +4 -2
  9. inc/cpcff_form.inc.php +7 -5
  10. inc/cpcff_page_builders.inc.php +8 -1
  11. inc/cpcff_revisions.inc.php +1 -1
  12. inc/cpcff_session.inc.php +1 -1
  13. js/JSMin.php +0 -7
  14. js/fbuilder-pro-public.jquery.js +37 -1
  15. js/fields-admin/02_fbuilder.fcurrency.js +1 -1
  16. js/fields-admin/02_fbuilder.fnumber.js +1 -1
  17. js/fields-admin/09_fbuilder.ffile.js +8 -2
  18. js/fields-admin/fbuilder.fcalculated.js +39 -1
  19. js/fields-public/02_fbuilder.fcurrency.js +20 -2
  20. js/fields-public/02_fbuilder.fnumber.js +20 -1
  21. js/fields-public/02_fbuilder.fslider.js +11 -26
  22. js/fields-public/04_fbuilder.fdate.js +4 -28
  23. js/fields-public/09_fbuilder.ffile.js +30 -5
  24. js/fields-public/36_fbuilder.acceptance.js +1 -3
  25. js/fields-public/fbuilder.fcalculated.js +2 -1
  26. js/jQuery.stringify.js +4 -4
  27. js/modules/06_connector/admin/module_admin.js +19 -0
  28. js/modules/06_connector/public/01_connector.js +48 -0
  29. js/modules/06_connector/public/module_public.js +11 -0
  30. pagebuilders/beaverbuilder/cff.inc.php +44 -0
  31. pagebuilders/beaverbuilder/cff/beaver.pb.php +18 -0
  32. pagebuilders/beaverbuilder/cff/includes/frontend.php +15 -0
  33. templates/01/style.css +0 -2
  34. templates/02/style.css +2 -2
  35. templates/03/style.css +0 -2
  36. templates/04/style.css +2 -4
  37. templates/05/style.css +7 -3
  38. templates/06/style.css +1 -3
  39. templates/07/style.css +7 -3
  40. templates/08/style.css +3 -4
  41. templates/09/style.css +1 -1
  42. templates/10/style.css +2 -2
  43. templates/11/js.js +6 -6
  44. templates/11/style.css +13 -9
  45. templates/12/style.css +5 -7
  46. templates/12/unite.css +72 -266
README.txt CHANGED
@@ -3,7 +3,7 @@ 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.1
7
Stable tag: trunk
8
License: GPLv2 or later
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -54,6 +54,7 @@ The "Calculated Fields Form" plugin allows the specific integration with the fol
54
* Gutenberg Editor.
55
* Elementor.
56
* Page Builder by SiteOrigin.
57
* For other editors, the shortcodes should be inserted using other controls of general purpose, like the controls for inserting HTML or shortcodes.
58
59
= Latest Features Added =
@@ -104,14 +105,15 @@ The plugin has two additional (commercial) versions: **Premium** and **Developer
104
* Includes financial operations
105
* Includes operations for date times management
106
* Includes the "distance" operation, that integrates the plugin with "Google Maps" to get the distance between two addresses
107
* Includes a script for saving the submitted data in an external database
108
* Includes an add-on to define Server Side Equations.
109
- * Includes an add-on to integrate the forms with the WooCommerce products.
110
- * Includes an add-on to integrate the forms with the SalesForce service.
111
- * 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.
112
- * Includes an add-on to associate the information submitted with the users on website.
113
- * Includes the User Registration Form add-on to register new users in the website with the data collected by the form.
114
- * Includes an add-on to integrate the forms with Google reCAPTCHA, instead the captcha distributed with the plugin.
115
116
= Features in Platinum version: =
117
@@ -143,13 +145,7 @@ The plugin has two additional (commercial) versions: **Premium** and **Developer
143
* SagePay add-on provides a secure interface for accepting payments through SagePay.
144
* Sage Payment add-on provides a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
145
146
- To know the last updates, and tips about the use of the plugin, please visit our blog, press like in our Facebook page, or follow our Twitter:
147
-
148
- Blog: [http://blog.net-factor.com](http://blog.net-factor.com "Technical blog")
149
-
150
- Facebook: [https://www.facebook.com/netfactorsl](https://www.facebook.com/netfactorsl "Facebook page")
151
-
152
- Twitter: [https://twitter.com/netfactorsl](https://twitter.com/netfactorsl "Twitter account")
153
154
== Other Notes ==
155
@@ -275,6 +271,10 @@ In addition to the above, the following operations that are available in the **D
275
276
[Description of operations in the distance module](http://cff.dwbooster.com/documentation#distance-module "Description of operations in the distance module")
277
278
= Fields available in the Calculated Fields Form's form builder =
279
280
To get the complete list of available fields, please visit the following link: [CLICK HERE](http://cff.dwbooster.com/documentation#common-fields "Available fields")
@@ -523,39 +523,39 @@ A: [Yes, both plugins are compatible...](http://cff.dwbooster.com/faq#q319 "Yes,
523
524
= Q: What means each field in the Calculated Fields Form settings area? =
525
526
- A: The Calculated Fields Form's page contains detailed information about each field and customization:
527
528
- http://cff.dwbooster.com/
529
530
= Q: Where can I publish a calculated fields form? =
531
532
- A: You can publish the forms into pages and posts. The shortcode can be also placed into the template. Other versions of the plugin also allow publishing it as a widget.
533
534
= Q: Is the form processing an option, for example, to email the form data and calculated results? =
535
536
- A: The form processing isn't available in the version listed on this directory. There are other versions with form processing, email notifications and payment processing. You can check other versions at http://cff.dwbooster.com/
537
538
= Q: Which calculation operations are included? =
539
540
- A: [Mathematical operations, logical operands and more](http://cff.dwbooster.com/documentation#mathematical-module "Documentation")
541
542
= Q: How can I round the calculated result to 2 decimal digits? =
543
544
- A: [Uses the "PREC" operation, described here](http://cff.dwbooster.com/documentation#prec "Documentation")
545
546
= Q: Which are the operations with date values that the plugin allows? =
547
548
- A: [List and description of date/time operations](http://cff.dwbooster.com/documentation#datetime-module "Documentation")
549
550
= Q: Are there financial operations included in the plugin? =
551
552
- A: [List and description of financial operations](http://cff.dwbooster.com/documentation#financial-module "Documentation")
553
554
- = Q: How to calculate an amortization? =
555
556
- A: The CALCULATEAMORTIZATION is the operation with most complexity in the "Calculated Fields Form" and requires its own section. Please, visit the following link to read a detailed description about the use of CALCULATEAMORTIZATION operation:
557
558
- [How calculate an amortization?](http://cff.dwbooster.com/faq#q219 "FAQ Entry")
559
560
= Q: Can I create global variables to be used in the equations? =
561
@@ -596,7 +596,7 @@ A: [Initializing date/time fields](http://cff.dwbooster.com/faq#q220 "FAQ Entry"
596
597
= Q: How to change the language on datepicker? =
598
599
- A: To use a different language on datepickers will be needed create an additional file and touch some code. Please, visit the following link to read the instructions:
600
601
[How to change the language on datepicker?](http://cff.dwbooster.com/faq#q221 "FAQ Entry")
602
@@ -604,43 +604,40 @@ A: To use a different language on datepickers will be needed create an additiona
604
605
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.
606
607
- [create relationships between date fields](http://cff.dwbooster.com/documentation#relationship-between-date-fields "Documentation")
608
609
= Q: Is there a way to format the form in a table structure (various fields in the same line) ? =
610
611
- A: [Formatting a form with table structure](http://cff.dwbooster.com/faq#q66 "FAQ Entry")
612
613
= Q: How to convert a common button in a submit button? =
614
615
- A: To convert a common button in a submit button, simply assigns, as part of the onclick event, the snippet of code:
616
617
jQuery(this).closest('form').submit();
618
619
- Note: this option is only compatible with the pro and developer versions of the plugin
620
-
621
= Q: How to display an image in a checkbox or radio button? =
622
623
A: [Displaying images in checkboxes and radio buttons](http://cff.dwbooster.com/faq#q222 "FAQ Entry")
624
625
- Additionally, to hide the checkboxes and radio buttons, and use only the images for choices selection, open the "/wp-content/plugins/calculated-fields-form/css/stylepublic.css" file in the text editor your choice, and paste the following styles definition at the end of file's content:
626
627
#fbuilder input[type="radio"],
628
#fbuilder input[type="checkbox"]{display:none !important;}
629
630
- = Q: How to replace the image displayed in a Media Field, in function of choice selected in a radio buttons field? =
631
632
A: [How to replace the image displayed in a Media Field](http://cff.dwbooster.com/faq#q266 "FAQ Entry")
633
634
- = Q: In which order are "calculated" the fields? =
635
636
A: [Evaluating the equations](http://cff.dwbooster.com/faq#q79 "FAQ Entry")
637
638
= Q: Can I link the calculated amount to a PayPal payment form? =
639
640
- A: That feature is available in the pro version that can be acquired at this page http://cff.dwbooster.com/
641
642
- Visit the following link to our technical blog with a detailed description about the integration of PayPal and the forms created with CFF:
643
- [Calculated Fields Form and PayPal](http://blog.net-factor.com/calculated-fields-form-and-paypal/ "Blog Post")
644
645
= Q: Non-latin characters aren't being displayed in the calculator form. There is a workaround? =
646
@@ -650,9 +647,11 @@ A: [Solution Here](http://cff.dwbooster.com/faq#q225 "utf-8")
650
651
A: In the "throubleshoot area" (located below the list of forms in the settings area) change the "Script load method" from "Classic" to "Direct".
652
653
= Q: How to create multi-page forms? =
654
655
- A: Use the "Page Break" field on the form builder to indicate the new pages on the form.
656
657
= Q: How to display the selected values in the slider control? =
658
@@ -664,7 +663,7 @@ A: [Create new validation rules](http://cff.dwbooster.com/documentation#new-vali
664
665
= Q: How to display a summary of entered data in the form? =
666
667
- A: Insert a summary control and select the fields to be displayed on summary.
668
669
= Q: How to highlight the fields in the summary control? =
670
@@ -678,9 +677,7 @@ A: [Displaying a summary in the Thank you page](http://cff.dwbooster.com/faq#q23
678
679
A: [Applying CSS styles to the form fields](http://cff.dwbooster.com/faq#q82 "FAQ Entry")
680
681
- [Tips and Tricks: Using auxiliary fields](http://blog.net-factor.com/tips-and-tricks-using-instruct-text-as-auxiliary-fields-to-modify-the-forms-appearance/ "Blog Post")
682
-
683
- = Q: Is possible modify any of predefined templates included with the plugin? =
684
685
A: [Modifying the predefined templates](http://cff.dwbooster.com/faq#q231 "FAQ Entry")
686
@@ -688,18 +685,14 @@ A: [Modifying the predefined templates](http://cff.dwbooster.com/faq#q231 "FAQ E
688
689
A: [Creating new templates](http://cff.dwbooster.com/documentation#create-template "Documentation")
690
691
- = Q: How to hide the fields on forms? =
692
693
A: [Hiding the fields in form](http://cff.dwbooster.com/faq#q232 "FAQ Entry")
694
695
- = Q: Why after assign some of class names: column2, column3, or column4, to a group of fields, the field that follow the group is displayed displaced at right? =
696
697
A: [Inserting a separator field between rows](http://cff.dwbooster.com/faq#q320 "FAQ Entry")
698
699
- = Q: How to create a form with a table structure, when the fields are displayed dynamically using dependencies? =
700
-
701
- A: [Table structure with dependent fields](http://blog.net-factor.com/tips-for-displaying-the-forms-created-with-the-calculated-fields-form-plugin-with-table-structure-in-dependent-fields/ "Blog Post")
702
-
703
= Q: How assign multiple class names to a field? =
704
705
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
@@ -708,17 +701,17 @@ A: The class names are assigned to the fields through the attribute: "Add Css La
708
709
A: [What files can be uploaded through the form?](http://cff.dwbooster.com/faq#q235 "FAQ Entry")
710
711
- = Q: How can I include the link to the uploaded file into the email message? =
712
713
A: [Inserting the links to the uploaded files](http://cff.dwbooster.com/faq#q160 "FAQ Entry")
714
715
= Q: Why the form builder is displaying the error message: "The entered data includes invalid characters..."? =
716
717
- A: Sometimes the users copy the text for the fields labels, and descriptions, from a different platform, for example Excel or MS Word, but the text copied can include invalid characters. The plugin validates the form's structure to avoid this type of errors.
718
719
= Q: How to use conditional statements in the equations? =
720
721
- A: There are three ways to use conditional statements in the equations:
722
723
[Visit the following link](http://cff.dwbooster.com/faq#q239 "FAQ Entry")
724
@@ -728,27 +721,23 @@ A: To print only the form, but not the rest of page, please, follows the instruc
728
729
[Visit the following link to the documentation page](http://cff.dwbooster.com/documentation#print-form "Documentation")
730
731
- = Q: How to disable the dynamic evaluation of the equations, when vary the fields values? =
732
-
733
- A: To disable the dynamic evaluation of the equations in the form, you only should uncheck the option: "Eval dynamically the equations associated to the calculated fields", from the "Form Settings" tab, of form builder. But, should be inserted a button with "calculate" type, to evaluate the equations with an direct action of users.
734
-
735
- = Q: I've implemented complex equations, but are not working. What can I do? =
736
737
- A: The plugin tries to optimize the equations to improves forms performance, and reduce the sequence of equations, but if the equations are not working, I suggest to select any of the calculated field in the form, and untick the option: "Optimize Form Equations". If the previous step is not sufficient be sure the equation has been implemented correctly: [Click Here](http://cff.dwbooster.com/documentation#equation-tips "Documentation")
738
739
= 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? =
740
741
- A: Yes, that is possible, you only should enter all emails addresses separated by the comma symbol, through the attribute: "Destination emails", in the form's settings.
742
743
- = Q: Why the users are not receiving the notification emails if was selected the option for send a copy to the user, and selected the email field, from the form's settings? =
744
745
- A: If the users are not receiving the notification emails with submission data, there are different reasons:
746
747
[Visit the following link](http://cff.dwbooster.com/faq#q241 "FAQ Entry")
748
749
- = Q: How to insert changes of lines in the notification emails, when the HTML format is selected? =
750
751
- A: If you are using the HTML format in the notification emails, you should insert the BR tags for the changes of lines in the emails content:
752
753
**<BR />**
754
@@ -758,17 +747,17 @@ A: [Inserting images in the notification emails](http://cff.dwbooster.com/faq#q2
758
759
= Q: How to send specific fields in the notification emails, and not all form fields? =
760
761
- A: The notification emails can include all fields submitted by the form (<%INFO%>) or specific files (<%fieldname#%>), furthermore, some other special tags. Please, visit the following link to get the complete list of tags to include in the email:
762
763
- [Visit the following link with all available options](http://cff.dwbooster.com/faq#q81 "FAQ Entry")
764
765
= Q: How to create dependencies between fields in the notification emails, and the thank you pages? =
766
767
- A: [Visit the following link](http://cff.dwbooster.com/faq#q318 "FAQ Entry")
768
769
- = Q: How to include my own javascript files to implement my own operations? =
770
771
- A: [Visit the following link](http://cff.dwbooster.com/faq#q245 "FAQ Entry")
772
773
= Q: How to calculate the number of words in a text? =
774
@@ -780,69 +769,76 @@ A: [Calculating the number of characters in a text](http://cff.dwbooster.com/faq
780
781
= Q: How to assign a value to a field that is not a calculated field from an equation? =
782
783
- A: To enter a value programmatically to a field, that is not a calculated field, will require to assign custom class names to the fields, and edit any of the equations in your form. Please, visit the following link:
784
-
785
- [Assigning values to fields from equations](http://cff.dwbooster.com/faq#q248 "FAQ Entry")
786
787
= Q: How to insert a link in the form? =
788
789
- A: The latest version of plugin includes the "HTML Content" field to insert HTML tags directly on it. Simply insert an "HTML Content" field in the form, and then, enter the tag of the link in the content's attributes. For example, to insert a link to our website, you should enter the following tag:
790
791
**<a href="http://cff.dwbooster.com">Visit the website</a>**
792
793
= Q: How to define dependencies between fields in the form? =
794
795
- A: Visit the following link with a tutorial about the use of dependencies between fields in the form,
796
-
797
- [Click Here](http://blog.net-factor.com/how-to-use-dependencies-between-fields-in-the-form/ "Blog Post")
798
799
= Q: How can be created dependencies with multiple fields? =
800
801
- A: To create dependencies that depend of values of multiple fields, will be needed validate the dependencies rules, and display or hide the fields through an equation. Please, visit the following link:
802
-
803
- [Defining dependencies](http://cff.dwbooster.com/faq#q250 "FAQ Entry")
804
805
= Q: How to prevent users vary the values of fields, for paying less than the calculated price? =
806
807
- 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.
808
809
= Q: How to use the value of a field in the form, as the name of product submitted to PayPal? =
810
811
- A: Through the attribute: "Paypal product name" in the form's settings, is defined the name of the product to be submitted to PayPal. It is possible to use a fixed text, or the value of a field in the form (for example, suppose that you have a DropDown field, or radio buttons field, to select the product's name), each field has associated a name with the format: fieldname#. For example to use the value of the fieldname1 field, as the product's name, should be entered the text <%fiedname1%> in the "Paypal product name" attribute.
812
813
= Q: How to allow to the users decide the frequency of payments for recurring payments? =
814
815
- A: Please, read the instructions in the our technical blog.
816
- [Click Here](http://blog.net-factor.com/published-the-calculated-fields-form-pro-v5-0-21-dev-v5-0-22/ "Blog Post")
817
818
= Q: How to select a choice in a DropDown field, or Radio Button, based on calculated value? =
819
820
- A: Please, read the answer in the our technical blog:
821
- [Click Here](http://blog.net-factor.com/how-to-select-a-choice-in-a-dropdown-field-or-radio-button-based-on-calculated-value/ "Blog Post")
822
823
= Q: How to set the value of a slider control programmatically? =
824
825
A: Please, read the answer in the plugin's documentation:
826
[Click Here](http://cff.dwbooster.com/documentation#assign-slider-value-programmatically "Slider Value")
827
828
- = Q: How to use the URL parameters for filtering the data on "DS" controls? =
829
830
- A: Please, visit the following article in our technical blog:
831
- [Click Here](http://blog.net-factor.com/filtering-the-information-in-the-ds-controls-with-urls-parameters/ "Blog Post")
832
833
= Q: In a form with multiple "DS" fields. How to reduce the number of queries to database? =
834
835
- A: In this case the recommendation is to use "RecordSet DS" fields as datasource: [Click Here for instructions](http://cff.dwbooster.com/faq#q321 "Recordset")
836
837
= Q: How to use the data submitted by a form in another one? =
838
839
- A: Please, read the instructions in the our technical blog.
840
- [Click Here](http://blog.net-factor.com/how-to-use-the-data-submitted-by-a-form-in-another-one/ "Blog Post")
841
842
- = Q: How to store the data sent on a different database? =
843
844
- A: Please, read the instructions in the our technical blog.
845
- [Click Here](http://blog.net-factor.com/how-store-data-sent-different-database/ "Blog Post")
846
847
= Q: How do I integrate forms with WooCommerce products? =
848
@@ -861,12 +857,12 @@ A: If you have created the form correctly, and associated it to the product, eve
861
A: To get a complete guide about the integration of forms created with the plugin and the SalesForce service, please visit the following link:
862
[Click Here](http://blog.net-factor.com/what-is-salesforce-and-how-to-create-new-leads-from-my-forms/ "Blog Post")
863
864
- = Q: How to export the submitted files to DropBox? =
865
866
- A: Please, visits the following link to get a tutorial to integrate the form with the Dropbox service:
867
- [Click Here](http://cff.dwbooster.com/faq#q272 "FAQ Entry")
868
869
- = Q: How to generate a PDF file with the submitted information, and send it as attachment to the user? =
870
871
A: Please, visits the following link to get a tutorial:
872
[Click Here](http://cff.dwbooster.com/faq#q273 "FAQ Entry")
@@ -888,8 +884,17 @@ A: Please, visit the following entry in the FAQ page of the plugin with the inst
888
889
= Q: I've an issue with the character encoding in the exported CSV/Excel files? =
890
891
- A: Please, visit the following entry in our technical blog:
892
- [Click Here](http://blog.net-factor.com/character-encoding-in-exported-csvexcel-files/ "Character encoding in exported CSV/Excel files")
893
894
== Screenshots ==
895
@@ -898,80 +903,64 @@ A: Please, visit the following entry in our technical blog:
898
3. Inserting the form using the Gutenberg Editor
899
4. Inserting the form using Elementor
900
5. Inserting the form using Page Builder by SiteOrigin
901
- 6. Sample calculated form
902
- 7. Calculated field settings
903
- 8. Calculator Form builder
904
- 9. Editing general fields
905
- 10. Available designs
906
- 11. Add-ons section
907
- 12. WooCommerce add-on
908
- 13. SalesForce add-on
909
- 14. WebHook add-on, and its integration with Zapier
910
911
== Changelog ==
912
913
- = 1.0.290 =
914
915
- * Modifies the dependencies (Checkbox, Radio Buttons, DropDown, Container fields, Calculated fields).
916
- * Modifies the date/time control for defining the aria-labels for screen readers.
917
- * Fixes an issue that causes the loopback request to the site fails, caused by the sessions management (Professional, Developer and Platinum versions of the plugin).
918
- * Includes a new attribute in the troubleshoot section for starting the session as soon as possible (in case of conflict with other plugins) (Professional, Developer, and Platinum versions of the plugin).
919
- * Modifies the PayPal Pro add-on (Platinum version of the plugin).
920
921
- = 1.0.289 =
922
923
- * Improves the Widgets for Page Builder by SiteOrigin.
924
- * Improves the Widgets for Elementor.
925
- * Includes a new block for inserting the results list shortcode in the Gutenberg editor (Professional, Developer and Platinum versions of the plugin).
926
- * Includes a new icon for inserting the results list shortcode in the Classic WordPress editor (Professional, Developer and Platinum versions of the plugin).
927
- * Modifies the module that generates the default email address used in the "from" attribute (Professional, Developer and Platinum versions of the plugin).
928
- * Fixes some errors in the CFF - CSV Generator add-on (Platinum version of the plugin).
929
930
- = 1.0.288 =
931
932
- * Implements new Widgets to allow the specific integration with the Page Builder by SiteOrigin.
933
- * Improves the integration with the other pages builders.
934
- * Modifies the Appearance/Widget, allowing to associate a class name to the form, and pass to it additional attributes (Professional, Developer and Platinum versions of the plugin).
935
- * Includes minimum changes in the CFF - WooCommerce add-on (Developer and Platinum versions of the plugin).
936
937
- = 1.0.287 =
938
939
- * Fixes an issue that causes the loopback request to the site fails.
940
941
- = 1.0.286 =
942
943
- * Modifies the blocks for the Gutenberg editor, preparing the plugin for WordPress 5.1
944
945
- = 1.0.285 =
946
947
- * Fixes an issue in the date/time controls.
948
949
- = 1.0.284 =
950
951
- * Fixes some issues in the slider control.
952
- * Modifies the Date controls allowing to enter other fields' names as the min and max attributes.
953
- * Modifies the Captcha generator to fix a conflict with other plugins.
954
- * Includes some minimal changes in the DS fields (Developer and Platinum versions of the plugin).
955
- * Includes some minimal changes in the interface of the Users Permissions add-on. Assings class names to the different tags in the list of users submissions (Developer and Platinum versions of the plugin).
956
- * Modifies the CSV Generator add-on to improve the security in the generated CSV files.
957
958
- = 1.0.283 =
959
960
- * Modifies the code that assigns the default values to the slider control.
961
962
- = 1.0.282 =
963
964
- * Fixes an issue in the slider controls.
965
966
- = 1.0.281 =
967
968
- * Fixes a conflict with older browsers.
969
- * Modifies the SESSION Management module.
970
- * Includes a new module for cleaning the expired transients.
971
- * The Platinum version of the plugin includes the CSV Generator add-on.
972
973
== Upgrade Notice ==
974
975
- = 1.0.290 =
976
977
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.2
7
Stable tag: trunk
8
License: GPLv2 or later
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
54
* Gutenberg Editor.
55
* Elementor.
56
* Page Builder by SiteOrigin.
57
+ * Beaver Builder.
58
* For other editors, the shortcodes should be inserted using other controls of general purpose, like the controls for inserting HTML or shortcodes.
59
60
= Latest Features Added =
105
* Includes financial operations
106
* Includes operations for date times management
107
* Includes the "distance" operation, that integrates the plugin with "Google Maps" to get the distance between two addresses
108
+ * Includes the Chart.js module to integrate ChartJS in the form
109
* Includes a script for saving the submitted data in an external database
110
* Includes an add-on to define Server Side Equations.
111
+ * Includes an add-on to integrate the forms with the WooCommerce products
112
+ * Includes an add-on to integrate the forms with the SalesForce service
113
+ * 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
114
+ * Includes an add-on to associate the information submitted with the users on website
115
+ * Includes the User Registration Form add-on to register new users in the website with the data collected by the form
116
+ * Includes an add-on to integrate the forms with Google reCAPTCHA, instead the captcha distributed with the plugin
117
118
= Features in Platinum version: =
119
145
* SagePay add-on provides a secure interface for accepting payments through SagePay.
146
* Sage Payment add-on provides a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
147
148
+ 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")
149
150
== Other Notes ==
151
271
272
[Description of operations in the distance module](http://cff.dwbooster.com/documentation#distance-module "Description of operations in the distance module")
273
274
+ **Chart.js Module**
275
+
276
+ [Description of operations in the Chart.js module](http://cff.dwbooster.com/documentation#chart-module "Description of operations in the Chart.js module")
277
+
278
= Fields available in the Calculated Fields Form's form builder =
279
280
To get the complete list of available fields, please visit the following link: [CLICK HERE](http://cff.dwbooster.com/documentation#common-fields "Available fields")
523
524
= Q: What means each field in the Calculated Fields Form settings area? =
525
526
+ A: The Calculated Fields Form's page contains detailed information about each field in the plugin:
527
528
+ [Form Fields](https://cff.dwbooster.com/documentation#common-fields "Form fields")
529
530
= Q: Where can I publish a calculated fields form? =
531
532
+ 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")
533
534
= Q: Is the form processing an option, for example, to email the form data and calculated results? =
535
536
+ 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")
537
538
= Q: Which calculation operations are included? =
539
540
+ A: The Free and Professional versions of the plugin includes the Mathematical operataions 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")
541
542
= Q: How can I round the calculated result to 2 decimal digits? =
543
544
+ A: [Using the "PREC" operation, described here](http://cff.dwbooster.com/documentation#prec "PREC Operation")
545
546
= Q: Which are the operations with date values that the plugin allows? =
547
548
+ A: [List and description of date/time operations](http://cff.dwbooster.com/documentation#datetime-module "Date/Time Operations")
549
550
= Q: Are there financial operations included in the plugin? =
551
552
+ A: [List and description of financial operations](http://cff.dwbooster.com/documentation#financial-module "Financial Operations")
553
554
+ = Q: How to calculate the payments amortization? =
555
556
+ 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:
557
558
+ [How calculate an amortization?](http://cff.dwbooster.com/faq#q219 "CALCULATEAMORTIZATION Operation")
559
560
= Q: Can I create global variables to be used in the equations? =
561
596
597
= Q: How to change the language on datepicker? =
598
599
+ 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:
600
601
[How to change the language on datepicker?](http://cff.dwbooster.com/faq#q221 "FAQ Entry")
602
604
605
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.
606
607
+ [Create relationships between date fields](http://cff.dwbooster.com/documentation#relationship-between-date-fields "Documentation")
608
609
= Q: Is there a way to format the form in a table structure (various fields in the same line) ? =
610
611
+ 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")
612
613
= Q: How to convert a common button in a submit button? =
614
615
+ A: To convert a button's field in a submit button, enter the following code as its onclick event:
616
617
jQuery(this).closest('form').submit();
618
619
= Q: How to display an image in a checkbox or radio button? =
620
621
A: [Displaying images in checkboxes and radio buttons](http://cff.dwbooster.com/faq#q222 "FAQ Entry")
622
623
+ Additionally, to hide the checkboxes and radio buttons, for using only the images for choosing, enter the following styles definition into the "Customize Form Design" attribute in the "Form Settigns" tab:
624
625
#fbuilder input[type="radio"],
626
#fbuilder input[type="checkbox"]{display:none !important;}
627
628
+ = Q: How to replace the image displayed in a Media Field, based on the choice selected in a radio buttons field? =
629
630
A: [How to replace the image displayed in a Media Field](http://cff.dwbooster.com/faq#q266 "FAQ Entry")
631
632
+ = Q: In which order are evaluated the equations associated to the calculated fields? =
633
634
A: [Evaluating the equations](http://cff.dwbooster.com/faq#q79 "FAQ Entry")
635
636
= Q: Can I link the calculated amount to a PayPal payment form? =
637
638
+ A: That feature is available in the [commercial versions of the plugin](https://cff.dwbooster.com/download "Download").
639
640
+ 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.
641
642
= Q: Non-latin characters aren't being displayed in the calculator form. There is a workaround? =
643
647
648
A: In the "throubleshoot area" (located below the list of forms in the settings area) change the "Script load method" from "Classic" to "Direct".
649
650
+ 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.
651
+
652
= Q: How to create multi-page forms? =
653
654
+ A: Simply insert "Page Break" fields in the form builder, between the fields that belong to different pages.
655
656
= Q: How to display the selected values in the slider control? =
657
663
664
= Q: How to display a summary of entered data in the form? =
665
666
+ A: Insert a summary control in the form, and select the fields to include in summary.
667
668
= Q: How to highlight the fields in the summary control? =
669
677
678
A: [Applying CSS styles to the form fields](http://cff.dwbooster.com/faq#q82 "FAQ Entry")
679
680
+ = Q: Is possible to modify any of predefined templates included with the plugin? =
681
682
A: [Modifying the predefined templates](http://cff.dwbooster.com/faq#q231 "FAQ Entry")
683
685
686
A: [Creating new templates](http://cff.dwbooster.com/documentation#create-template "Documentation")
687
688
+ = Q: How to hide the fields in the forms? =
689
690
A: [Hiding the fields in form](http://cff.dwbooster.com/faq#q232 "FAQ Entry")
691
692
+ = 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? =
693
694
A: [Inserting a separator field between rows](http://cff.dwbooster.com/faq#q320 "FAQ Entry")
695
696
= Q: How assign multiple class names to a field? =
697
698
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
701
702
A: [What files can be uploaded through the form?](http://cff.dwbooster.com/faq#q235 "FAQ Entry")
703
704
+ = Q: How can I include the links to the uploaded files into the notification emails? =
705
706
A: [Inserting the links to the uploaded files](http://cff.dwbooster.com/faq#q160 "FAQ Entry")
707
708
= Q: Why the form builder is displaying the error message: "The entered data includes invalid characters..."? =
709
710
+ A: If you are copying the information used to configure the form from third-party applications (like MS Word or Excel), this information can include non-valid characters. The plugin validates the form's structure to avoid this type of errors.
711
712
= Q: How to use conditional statements in the equations? =
713
714
+ A: There are different alternatives to use conditional statements in the equations:
715
716
[Visit the following link](http://cff.dwbooster.com/faq#q239 "FAQ Entry")
717
721
722
[Visit the following link to the documentation page](http://cff.dwbooster.com/documentation#print-form "Documentation")
723
724
+ = Q: How to disable the dynamic evaluation of the equations associated to the calculated fields? =
725
726
+ 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.
727
728
= 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? =
729
730
+ 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.
731
732
+ = 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? =
733
734
+ A: If the users are not receiving the notification emails after the form's submission, there are different possible reasons:
735
736
[Visit the following link](http://cff.dwbooster.com/faq#q241 "FAQ Entry")
737
738
+ = Q: How to insert lines changes in the notification emails, when the HTML format is selected? =
739
740
+ 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:
741
742
**<BR />**
743
747
748
= Q: How to send specific fields in the notification emails, and not all form fields? =
749
750
+ A: The notification emails can include all fields submitted by the form (<%INFO%>) or specific fields using their tags(<%fieldname#%>), furthermore of some other special tags. Please, visit the following link to get the complete list of tags to include in the email:
751
752
+ [Accepted tags](https://cff.dwbooster.com/documentation#special-tags "Special tags in the notification emails and the thank you pages")
753
754
= Q: How to create dependencies between fields in the notification emails, and the thank you pages? =
755
756
+ A: [Entry on the FAQ page](http://cff.dwbooster.com/faq#q318 "FAQ Entry")
757
758
+ = Q: How to implement my own operations? =
759
760
+ A: [FAQ page](http://cff.dwbooster.com/faq#q245 "FAQ Entry")
761
762
= Q: How to calculate the number of words in a text? =
763
769
770
= Q: How to assign a value to a field that is not a calculated field from an equation? =
771
772
+ A: [Assigning values to the fields from equations](http://cff.dwbooster.com/faq#q248 "FAQ Entry")
773
774
= Q: How to insert a link in the form? =
775
776
+ 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:
777
778
**<a href="http://cff.dwbooster.com">Visit the website</a>**
779
780
= Q: How to define dependencies between fields in the form? =
781
782
+ A: [Click Here](https://cff.dwbooster.com/documentation#dependencies "Plugin Documentation")
783
784
= Q: How can be created dependencies with multiple fields? =
785
786
+ 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")
787
788
= Q: How to prevent users vary the values of fields, for paying less than the calculated price? =
789
790
+ 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.
791
792
= Q: How to use the value of a field in the form, as the name of product submitted to PayPal? =
793
794
+ 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 <%fiedname1%> in the "Paypal product name" attribute.
795
796
= Q: How to allow to the users decide the frequency of payments for recurring payments? =
797
798
+ A: Follows the instructions below:
799
+
800
+ 1. Inserts a Radio Button or DropDown field in the form.
801
+ 2. Enters any texts, for the texts of choices, but for the choices values must be entered the number of months.
802
+ 3. Selects the option: "From field", in the "Payment frequency" attribute.
803
+ 4. Finally, select the field inserted in the second step, from the list beside the "Payment frequency" attribute.
804
+
805
+ Tip: The maximum number of months allowed by PayPal for recurring payments is 12 months.
806
+
807
+ 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.
808
809
= Q: How to select a choice in a DropDown field, or Radio Button, based on calculated value? =
810
811
+ 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:
812
+
813
+ getField(123).setVal(5);
814
+
815
+ But if the fieldname123 is a checkbox field and you want to select the choices with values: 5 and 8, the code would be:
816
+
817
+ getField(123).setVal([5,8]);
818
819
= Q: How to set the value of a slider control programmatically? =
820
821
A: Please, read the answer in the plugin's documentation:
822
[Click Here](http://cff.dwbooster.com/documentation#assign-slider-value-programmatically "Slider Value")
823
824
+ = Q: How to use the "DS" fields? =
825
826
+ A: Please, visit the following post in our technical blog:
827
+ [Click Here](https://cff.dwbooster.com/blog/2019/02/14/ds/ "Using the information stored in a database or csv file in the form")
828
829
= Q: In a form with multiple "DS" fields. How to reduce the number of queries to database? =
830
831
+ 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")
832
833
= Q: How to use the data submitted by a form in another one? =
834
835
+ A: Please, read the instructions in the plugin's documentation.
836
+ [Click Here](https://cff.dwbooster.com/documentation#populate-form-b-with-a "Populate the form B with the data submitted by the form A")
837
838
+ = Q: How to store the submitted information in another database? =
839
840
+ A: Please, read the instructions in the plugin's documentation.
841
+ [Click Here](https://cff.dwbooster.com/documentation#third-party-database "Storing Data in a Different Database")
842
843
= Q: How do I integrate forms with WooCommerce products? =
844
857
A: To get a complete guide about the integration of forms created with the plugin and the SalesForce service, please visit the following link:
858
[Click Here](http://blog.net-factor.com/what-is-salesforce-and-how-to-create-new-leads-from-my-forms/ "Blog Post")
859
860
+ = Q: How to copy the uploaded files to DropBox? =
861
862
+ A: Activates and configure the DropBox add-on, distributed with the Platinum version of the plugin:
863
+ [Click Here](https://cff.dwbooster.com/documentation#dropbox-addon "DropBox add-on")
864
865
+ = Q: How to generate a PDF file dynamically with the submitted information? =
866
867
A: Please, visits the following link to get a tutorial:
868
[Click Here](http://cff.dwbooster.com/faq#q273 "FAQ Entry")
884
885
= Q: I've an issue with the character encoding in the exported CSV/Excel files? =
886
887
+ A: If this happens follow these steps to correctly import the file:
888
+
889
+ 1. Save the exported file as a csv
890
+ 2. Open Excel
891
+ 3. Import the data using Data < Import External Data < Import Data
892
+ 4. Select the file type of "csv" and browse to your file
893
+ 5. In the import wizard change the File_Origin to the related language character identifier
894
+ 6. Change the Delimiter to comma if needed
895
+ 7. Select where to import to and Finish
896
+
897
+ This way the special characters should show correctly.
898
899
== Screenshots ==
900
903
3. Inserting the form using the Gutenberg Editor
904
4. Inserting the form using Elementor
905
5. Inserting the form using Page Builder by SiteOrigin
906
+ 6. Inserting the form using Beaver Builder
907
+ 7. Sample calculated form
908
+ 8. Calculated field settings
909
+ 9. Advanced equations editor
910
+ 10. Calculator Form builder
911
+ 11. Editing general fields
912
+ 12. Available designs
913
+ 13. Add-ons section
914
+ 14. WooCommerce add-on
915
+ 15. SalesForce add-on
916
+ 16. WebHook add-on, and its integration with Zapier
917
918
== Changelog ==
919
920
+ = 1.0.306 =
921
922
+ * Modifies the autocomplete module to include the requirements of latest versions of browsers.
923
+ * Modifies the slider control to circumvent some errors caused by invalid values entered by the form creator.
924
+ * Includes the Chart.js operations module to integrate ChartJS in the form (Developer and Platinum versions of the plugin)
925
926
+ = 1.0.305 =
927
928
+ * Includes the 'Connecting with thirds' module, with the cffProxy operation that allows the use of third party functions in the equations.
929
930
+ = 1.0.304 =
931
932
+ * Fixes an issue in the module that associates fields.
933
934
+ = 1.0.303 =
935
936
+ * Includes a specific module to allow the integration with Beaver Builder.
937
938
+ = 1.0.302 =
939
940
+ * Fixes an issue where the error message overlap the acceptance control when the validation rule fails in the submit action.
941
942
+ = 1.0.301 =
943
944
+ * Modifies the revisions module. The current update increases the number of revisions per form to 20, where the older are removed from the database. Furthermore, it is possible to generate the revisions even pressing the preview button.
945
946
+ = 1.0.300 =
947
948
+ * Improves the code that creates the relationship between the fields' attributes and other fields in the form, furthermore, fixes some issues between this relationships and the dependencies.
949
950
+ = 1.0.299 =
951
952
+ * Modifies the Number and Currency controls allowing enter the name of other fields as the MAX and MIN attributes to define a relationship between the fields.
953
954
+ = 1.0.298 =
955
956
+ * Fixes an issue applying the stringify to the JSON object of form's structure.
957
958
+ = 1.0.297 =
959
960
+ * Includes the integration with an advanced equations editor.
961
962
== Upgrade Notice ==
963
964
+ = 1.0.306 =
965
966
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,79 @@
1
== Changelog ==
2
3
= 1.0.290 =
4
5
* Modifies the dependencies (Checkbox, Radio Buttons, DropDown, Container fields, Calculated fields).
1
== Changelog ==
2
3
+ = 1.0.306 =
4
+
5
+ * Modifies the autocomplete module to include the requirements of latest versions of browsers.
6
+ * Modifies the slider control to circumvent some errors caused by invalid values entered by the form creator.
7
+ * Includes the Chart.js operations module to integrate ChartJS in the form (Developer and Platinum versions of the plugin)
8
+
9
+ = 1.0.305 =
10
+
11
+ * Includes the 'Connecting with thirds' module, with the cffProxy operation that allows the use of third party functions in the equations.
12
+
13
+ = 1.0.304 =
14
+
15
+ * Fixes an issue in the module that associates fields.
16
+
17
+ = 1.0.303 =
18
+
19
+ * Includes a specific module to allow the integration with Beaver Builder.
20
+
21
+ = 1.0.302 =
22
+
23
+ * Fixes an issue where the error message overlap the acceptance control when the validation rule fails in the submit action.
24
+
25
+ = 1.0.301 =
26
+
27
+ * Modifies the revisions module. The current update increases the number of revisions per form to 20, where the older are removed from the database. Furthermore, it is possible to generate the revisions even pressing the preview button.
28
+
29
+ = 1.0.300 =
30
+
31
+ * Improves the code that creates the relationship between the fields' attributes and other fields in the form, furthermore, fixes some issues between this relationships and the dependencies.
32
+
33
+ = 1.0.299 =
34
+
35
+ * Modifies the Number and Currency controls allowing enter the name of other fields as the MAX and MIN attributes to define a relationship between the fields.
36
+
37
+ = 1.0.298 =
38
+
39
+ * Fixes an issue applying the stringify to the JSON object of form's structure.
40
+
41
+ = 1.0.297 =
42
+
43
+ * Includes the integration with an advanced equations editor.
44
+
45
+ = 1.0.296 =
46
+
47
+ * Modifies the template 11 to fix a conflict with the Mega Addons For WPBakery Page Builder.
48
+
49
+ = 1.0.295 =
50
+
51
+ * Edits some styles that were redefined by the website's themes, breaking the forms' structures.
52
+ * Optimizes other styles defined in the plugin.
53
+ * Prevents that some files, required only by Elementor in the edition context, be loaded in the public website.
54
+ * Includes the new attribute in_tag (whose accepted values are: img or a) to be used with the special fields' tags <%fieldname#_url%> and <%fieldname#_urls%> into the notification emails and thank you pages, to include images tags or anchors to the uploaded files (Professional, Developer and Platinum versions of the plugin).
55
+
56
+ = 1.0.294 =
57
+
58
+ * Modifies the Upload File control for showing a preview of selected files before upload them.
59
+
60
+ = 1.0.293 =
61
+
62
+ * Modifies the module that evaluates the equations to fix a conflict with forms created by other plugins.
63
+
64
+ = 1.0.292 =
65
+
66
+ * Modifies all predefined templates and the forms' styles improving them and fixing some conflicts.
67
+ * Fixes some typos.
68
+ * If the thank you page is not defined, the user is redirected to the website's home page after submit the form (Professional, Developer and Platinum versions of the plugin)
69
+ * If the text of the notification email is empty, the plugin sends a summary of the information collected by the form (Professional, Developer and Platinum versions of the plugin)
70
+ * Improves the module that determines the default emails addresses for the From and Destination attributes in the form's settings (Professional, Developer and Platinum versions of the plugin)
71
+ * Improves the appearance of the PayPal Pro fields (Platinum version of the plugin)
72
+
73
+ = 1.0.291 =
74
+
75
+ * Removes some deprecated functions from the PHP 7.2
76
+
77
= 1.0.290 =
78
79
* Modifies the dependencies (Checkbox, Radio Buttons, DropDown, Container fields, Calculated fields).
config/cpcff_config.cfg.php CHANGED
@@ -114,7 +114,7 @@ $cpcff_default_texts_array = array(
114
'text' => 'Please enter a value with a valid extension.'
115
),
116
'upload_size' => array(
117
- 'label' => '"Maximun upload size in kB" text',
118
'text' => 'The file you\'ve chosen is too big, maximum is {0} kB.'
119
),
120
'phone' => array(
@@ -143,7 +143,8 @@ if(!function_exists('cpcff_init_constants'))
143
144
if(!defined('CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails'))
145
{
146
- define('CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails', CP_CALCULATEDFIELDSF_DEFAULT_fp_from_email);
147
}
148
} // End cpcff_init_constants
149
}
114
'text' => 'Please enter a value with a valid extension.'
115
),
116
'upload_size' => array(
117
+ 'label' => '"Maximum upload size in kB" text',
118
'text' => 'The file you\'ve chosen is too big, maximum is {0} kB.'
119
),
120
'phone' => array(
143
144
if(!defined('CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails'))
145
{
146
+ if(!isset($user_email)) $user_email = get_the_author_meta('user_email', get_current_user_id());
147
+ define('CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails', (!empty($user_email)) ? $user_email : CP_CALCULATEDFIELDSF_DEFAULT_fp_from_email);
148
}
149
} // End cpcff_init_constants
150
}
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.290
7
Text Domain: calculated-fields-form
8
Author: CodePeople
9
Author URI: https://cff.dwbooster.com
@@ -16,7 +16,7 @@ if(!defined('WP_DEBUG') || true != WP_DEBUG)
16
}
17
18
// Defining main constants
19
- define('CP_CALCULATEDFIELDSF_VERSION', '1.0.290' );
20
define('CP_CALCULATEDFIELDSF_MAIN_FILE_PATH', __FILE__ );
21
define('CP_CALCULATEDFIELDSF_BASE_PATH', dirname( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
22
define('CP_CALCULATEDFIELDSF_BASE_NAME', plugin_basename( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
3
Plugin Name: Calculated Fields Form
4
Plugin URI: https://cff.dwbooster.com
5
Description: Create forms with field values calculated based in other form field values.
6
+ Version: 1.0.306
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.306' );
20
define('CP_CALCULATEDFIELDSF_MAIN_FILE_PATH', __FILE__ );
21
define('CP_CALCULATEDFIELDSF_BASE_PATH', dirname( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
22
define('CP_CALCULATEDFIELDSF_BASE_NAME', plugin_basename( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
css/style.css CHANGED
@@ -111,11 +111,13 @@ textarea {resize: none}
111
.eq_btn{min-width:45px;}
112
.form-builder #sFieldList,
113
.form-builder #sToolbarList{width: calc( 100% - 50px );width: -webkit-calc( 100% - 50px );width: -moz-calc( 100% - 50px );width: -o-calc( 100% - 50x );}
114
#fCalculated{
115
background: url("cupertino/images/ui-bg_glass_80_eebd4d_1x400.png") repeat-x scroll 50% 50% #EEBD4D;
116
border: 1px solid #D0771D;
117
color: #643F0D;
118
}
119
#facceptance{
120
background: url("cupertino/images/ui-bg_glass_80_eebd4dc_1x400.png") repeat-x scroll 50% 50% #619218;
121
border: 1px solid #619218;
@@ -191,4 +193,13 @@ a.helpfbuilder{font-size:80%;text-decoration:underline;color:#00f;cursor:pointer
191
#metabox_basic_settings3 * ,
192
#metabox_basic_settings4 * {color:#bfbdbd91 !important;pointer-events: none !important;}
193
.cff-addons-category{display:inline-block;font-weight:bold;text-transform:capitalize;border-bottom:1px solid #eee;margin-bottom:10px;padding-bottom:5px;}
194
- .cff-addons-category:not(:first-child){margin-top:20px;}
111
.eq_btn{min-width:45px;}
112
.form-builder #sFieldList,
113
.form-builder #sToolbarList{width: calc( 100% - 50px );width: -webkit-calc( 100% - 50px );width: -moz-calc( 100% - 50px );width: -o-calc( 100% - 50x );}
114
+ #sAdvancedEditor,
115
#fCalculated{
116
background: url("cupertino/images/ui-bg_glass_80_eebd4d_1x400.png") repeat-x scroll 50% 50% #EEBD4D;
117
border: 1px solid #D0771D;
118
color: #643F0D;
119
}
120
+ #sAdvancedEditor{text-align:center; text-transform: uppercase; padding:5px;margin-bottom:10px;cursor:pointer;font-weight:bold;}
121
#facceptance{
122
background: url("cupertino/images/ui-bg_glass_80_eebd4dc_1x400.png") repeat-x scroll 50% 50% #619218;
123
border: 1px solid #619218;
193
#metabox_basic_settings3 * ,
194
#metabox_basic_settings4 * {color:#bfbdbd91 !important;pointer-events: none !important;}
195
.cff-addons-category{display:inline-block;font-weight:bold;text-transform:capitalize;border-bottom:1px solid #eee;margin-bottom:10px;padding-bottom:5px;}
196
+ .cff-addons-category:not(:first-child){margin-top:20px;}
197
+
198
+ /* MODAL WINDOW */
199
+ .cff-light-modal{display: none; position: fixed; background: transparent; top: 0; bottom: 0; left: 0; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; right: 0; z-index: 99999; transition: background 1s; font-size: 16px; visibility: hidden;}
200
+ .cff-light-modal-content{background: transparent; width: 90%; height:90%; position: relative; max-height: 90%; line-height: 1.4; display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column;}
201
+ .cff-light-modal-body{padding: 0; overflow: hidden; height: 100%;}
202
+ .cff-light-modal-close-icon{text-decoration: none; color: #fff; padding: 0; font-size: 24px; line-height: 24px; position: absolute; top: 5px; right: 5px; cursor: pointer;}
203
+ .cff-light-modal:target{background: rgba(0, 0, 0, 0.5); display: -ms-flexbox; display: flex; visibility: visible;}
204
+ @keyframes cff-basic{0%{opacity: 0;}100%{opacity: 1;}}
205
+ .cff-light-modal iframe{width:100%;height:100%;border-radius: .2em; overflow:hidden;}
css/stylepublic.css CHANGED
@@ -1,4 +1,4 @@
1
- .clearer{clear:both;}
2
3
#fbuilder,
4
#fbuilder *{-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;}
@@ -11,6 +11,9 @@
11
#fbuilder h3,
12
#fbuilder h4,
13
#fbuilder h5,
14
#fbuilder label{white-space:normal;}
15
16
#fbuilder input[type="text"],
@@ -325,18 +328,18 @@
325
#fbuilder .top_aligned .fields .dfield{}
326
327
@media print, screen and (min-width: 24em) {
328
- #fbuilder .left_aligned .fields label:not(:empty){float:left;width:35%;}
329
#fbuilder .left_aligned .fields label:not(:empty) + .dfield{float:left;width:65%;}
330
- #fbuilder .right_aligned .fields label:not(:empty){float:left;width:35%;text-align:right;padding:3px 3px 0px 0px;}
331
#fbuilder .right_aligned .fields label:not(:empty) + .dfield{float:left;width:65%;}
332
}
333
#fbuilder .right_aligned .fields .dfield label{text-align:left;}
334
335
*[dir="rtl"] #fbuilder .left_aligned .fields label:not(:empty){float:right;}
336
*[dir="rtl"] #fbuilder .left_aligned .fields label:not(:empty) + .dfield{float:right;}
337
- *[dir="rtl"] #fbuilder .right_aligned .fields label:not(:empty){float:right;text-align:left;}
338
*[dir="rtl"] #fbuilder .right_aligned .fields label:not(:empty) + .dfield{float:right;}
339
- *[dir="rtl"] #fbuilder .right_aligned .fields .dfield label{text-align:right;}
340
341
#fbuilder .one_column label,
342
#fbuilder .two_column label,
@@ -354,7 +357,9 @@
354
#fbuilder .cpefb_error+select,
355
#fbuilder .cpefb_error+select+select,
356
#fbuilder .cpefb_error+select+select+select{border:1px solid red;color:red !important;}
357
- #fbuilder .top_aligned .fields label.cpefb_error,.left_aligned .fields label.cpefb_error,.right_aligned .fields label.cpefb_error{display:block;border:0px;color:#f00;float:none;}
358
359
#fbuilder div.cpefb_error{background:#FDF9E5;border:1px solid #f00;opacity:0.9;margin-top:7px;position:relative;padding:0px 5px;z-index:1000;}
360
#fbuilder div.cpefb_error:after{content:"";position:absolute;background:transparent url("../images/tooltop.gif") no-repeat scroll 10px center;color:red;font-weight:bold;height:8px;width:100%;top:-8px;left:0px;z-index:1000;}
@@ -363,19 +368,21 @@
363
364
#fbuilder span.files-list,
365
#fbuilder span.uh{display:block;font-size:80%;clear:both;}
366
- #fbuilder span.files-list{padding: 5px auto;}
367
368
#fbuilder .section_break{border-top:1px dotted #555;clear:both;}
369
370
#fbuilder .uh_phone{float:left;margin:0px 5px;font-size:80%;text-align:center;position:relative;}
371
*[dir="rtl"] #fbuilder .uh_phone{float:right;}
372
#fbuilder .uh_phone input{text-align:center;font-size:100%;}
373
- #fbuilder .uh_phone div.cpefb_error{white-space:nowrap;}
374
#fbuilder .cpp_form { text-align:left;}
375
*[dir="rtl"] #fbuilder .cpp_form { text-align:right;}
376
#fbuilder .pbreak{display:none;}
377
#fbuilder .pbreak.pb0{display:block;}
378
- #fbuilder .pbreak .pbPrevious,.pbreak .pbNext,.pbSubmit{background:#ccc;color:#000;display:block;float:left;cursor:pointer;margin:10px 10px 0px 0px;padding:5px 20px;}
379
#fbuilder .submitbtn-disabled{cursor:not-allowed;opacity:0.5;pointer-events:none;}
380
*[dir="rtl"] #fbuilder .pbreak .pbPrevious,
381
*[dir="rtl"] #fbuilder .pbreak .pbNext,
@@ -389,13 +396,14 @@
389
#fbuilder .cpcaptchalayer,.cp_subbtn{display:none;}
390
#fbuilder .captcha img{ cursor:pointer; }
391
392
- #fbuilder input[type='radio'],#fbuilder input[type='checkbox']{width:auto;}
393
.ui-tooltip.uh-tooltip{width:250px;font-size:10px;font-weight:normal;padding:5px;z-index:9999 !important;}
394
.ui-tooltip img{max-width:100%;}
395
#fbuilder input[type="checkbox"]{-webkit-appearance:checkbox!important;}
396
#fbuilder input[type="radio"]{-webkit-appearance:radio!important;}
397
398
- #fbuilder .dfield.slider-container{ padding-left: 10px !important; padding-right: 10px !important;}
399
#fbuilder .dfield .slider{ margin-bottom:5px; }
400
401
#fbuilder .cff-summary-title:after{ content: ': '; }
1
+ #fbuilder .clearer{clear:both;}
2
3
#fbuilder,
4
#fbuilder *{-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;}
11
#fbuilder h3,
12
#fbuilder h4,
13
#fbuilder h5,
14
+ #fbuilder span,
15
+ #fbuilder p,
16
+ #fbuilder a,
17
#fbuilder label{white-space:normal;}
18
19
#fbuilder input[type="text"],
328
#fbuilder .top_aligned .fields .dfield{}
329
330
@media print, screen and (min-width: 24em) {
331
+ #fbuilder .left_aligned .fields:not(.section_breaks) label:not(:empty){float:left;width:35%;padding-right:10px;}
332
#fbuilder .left_aligned .fields label:not(:empty) + .dfield{float:left;width:65%;}
333
+ #fbuilder .right_aligned .fields:not(.section_breaks) label:not(:empty){float:left;width:35%;text-align:right;padding-right:10px;}
334
#fbuilder .right_aligned .fields label:not(:empty) + .dfield{float:left;width:65%;}
335
}
336
#fbuilder .right_aligned .fields .dfield label{text-align:left;}
337
338
*[dir="rtl"] #fbuilder .left_aligned .fields label:not(:empty){float:right;}
339
*[dir="rtl"] #fbuilder .left_aligned .fields label:not(:empty) + .dfield{float:right;}
340
+ *[dir="rtl"] #fbuilder .right_aligned .fields:not(.section_breaks) label:not(:empty){float:right;text-align:left;}
341
*[dir="rtl"] #fbuilder .right_aligned .fields label:not(:empty) + .dfield{float:right;}
342
+ *[dir="rtl"] #fbuilder .right_aligned .fields:not(.section_breaks) .dfield label{text-align:right;}
343
344
#fbuilder .one_column label,
345
#fbuilder .two_column label,
357
#fbuilder .cpefb_error+select,
358
#fbuilder .cpefb_error+select+select,
359
#fbuilder .cpefb_error+select+select+select{border:1px solid red;color:red !important;}
360
+ #fbuilder .top_aligned .fields label.cpefb_error,
361
+ #fbuilder .left_aligned .fields label.cpefb_error,
362
+ #fbuilder .right_aligned .fields label.cpefb_error{display:block;border:0px;color:#f00;float:none;}
363
364
#fbuilder div.cpefb_error{background:#FDF9E5;border:1px solid #f00;opacity:0.9;margin-top:7px;position:relative;padding:0px 5px;z-index:1000;}
365
#fbuilder div.cpefb_error:after{content:"";position:absolute;background:transparent url("../images/tooltop.gif") no-repeat scroll 10px center;color:red;font-weight:bold;height:8px;width:100%;top:-8px;left:0px;z-index:1000;}
368
369
#fbuilder span.files-list,
370
#fbuilder span.uh{display:block;font-size:80%;clear:both;}
371
+ #fbuilder span.files-list{padding: 5px 0;}
372
+ #fbuilder span.files-list span{display: inline-block;}
373
374
#fbuilder .section_break{border-top:1px dotted #555;clear:both;}
375
376
#fbuilder .uh_phone{float:left;margin:0px 5px;font-size:80%;text-align:center;position:relative;}
377
*[dir="rtl"] #fbuilder .uh_phone{float:right;}
378
#fbuilder .uh_phone input{text-align:center;font-size:100%;}
379
#fbuilder .cpp_form { text-align:left;}
380
*[dir="rtl"] #fbuilder .cpp_form { text-align:right;}
381
#fbuilder .pbreak{display:none;}
382
#fbuilder .pbreak.pb0{display:block;}
383
+ #fbuilder .pbPrevious,
384
+ #fbuilder .pbNext,
385
+ #fbuilder .pbSubmit{background:#ccc;color:#000;display:block;float:left;cursor:pointer;margin:10px 10px 0px 0px;padding:5px 20px;}
386
#fbuilder .submitbtn-disabled{cursor:not-allowed;opacity:0.5;pointer-events:none;}
387
*[dir="rtl"] #fbuilder .pbreak .pbPrevious,
388
*[dir="rtl"] #fbuilder .pbreak .pbNext,
396
#fbuilder .cpcaptchalayer,.cp_subbtn{display:none;}
397
#fbuilder .captcha img{ cursor:pointer; }
398
399
+ #fbuilder input[type='radio'],
400
+ #fbuilder input[type='checkbox']{width:auto;}
401
.ui-tooltip.uh-tooltip{width:250px;font-size:10px;font-weight:normal;padding:5px;z-index:9999 !important;}
402
.ui-tooltip img{max-width:100%;}
403
#fbuilder input[type="checkbox"]{-webkit-appearance:checkbox!important;}
404
#fbuilder input[type="radio"]{-webkit-appearance:radio!important;}
405
406
+ #fbuilder .dfield.slider-container{ padding-left: 10px !important; padding-right: 10px !important; padding-top:5px;}
407
#fbuilder .dfield .slider{ margin-bottom:5px; }
408
409
#fbuilder .cff-summary-title:after{ content: ': '; }
inc/cpcff_admin_int.inc.php CHANGED
@@ -230,6 +230,7 @@ $cpcff_texts_array = CPCFF_AUXILIARY::array_replace_recursive(
230
<p class="submit">
231
<input type="submit" name="save" id="save" class="button-primary" value="<?php esc_attr_e( 'Save Changes', 'calculated-fields-form' ); ?>" title="Saves the form's structure and settings and creates a revision" />
232
<input type="button" name="previewbtn" id="previewbtn" class="button-primary" value="<?php esc_attr_e( 'Preview', 'calculated-fields-form' ); ?>" onclick="jQuery.fbuilder.preview( this );" title="Saves the form's structure only, and opens a preview windows" />
233
</p>
234
235
<div id="metabox_basic_settings" class="postbox" >
230
<p class="submit">
231
<input type="submit" name="save" id="save" class="button-primary" value="<?php esc_attr_e( 'Save Changes', 'calculated-fields-form' ); ?>" title="Saves the form's structure and settings and creates a revision" />
232
<input type="button" name="previewbtn" id="previewbtn" class="button-primary" value="<?php esc_attr_e( 'Preview', 'calculated-fields-form' ); ?>" onclick="jQuery.fbuilder.preview( this );" title="Saves the form's structure only, and opens a preview windows" />
233
+ | <input type="checkbox" name="cff-revisions-in-preview" CHECKED /><?php _e('Generate revisions in the form preview as well', 'calculated-fields-form'); ?>
234
</p>
235
236
<div id="metabox_basic_settings" class="postbox" >
inc/cpcff_auxiliary.inc.php CHANGED
@@ -63,14 +63,16 @@ if(!class_exists('CPCFF_AUXILIARY'))
63
* @since 1.0.167
64
* @return string.
65
*/
66
- public static function site_url()
67
{
68
if(empty(self::$_site_url))
69
{
70
$blog = self::blog_id();
71
self::$_site_url = get_home_url( $blog, '', is_ssl() ? 'https' : 'http');
72
}
73
- return rtrim(self::$_site_url, '/');
74
} // End site_url
75
76
/**
63
* @since 1.0.167
64
* @return string.
65
*/
66
+ public static function site_url( $no_protocol = false )
67
{
68
if(empty(self::$_site_url))
69
{
70
$blog = self::blog_id();
71
self::$_site_url = get_home_url( $blog, '', is_ssl() ? 'https' : 'http');
72
}
73
+ $_site_url = rtrim(self::$_site_url, '/');
74
+ if($no_protocol) $_site_url = preg_replace('/^http(s?)\:/i', '', $_site_url);
75
+ return $_site_url;
76
} // End site_url
77
78
/**
inc/cpcff_form.inc.php CHANGED
@@ -199,10 +199,12 @@ if(!class_exists('CPCFF_FORM'))
199
$value = $this->_settings['form_structure'] = $form_data;
200
}
201
}
202
-
203
- // If the texts where not defined previously populate them with the default values
204
- if (
205
- $option == 'vs_all_texts' &&
206
empty( $value )
207
)
208
{
@@ -308,7 +310,7 @@ if(!class_exists('CPCFF_FORM'))
308
array( '%d' )
309
);
310
311
- if($updated_rows !== false && !isset($params['preview'])) $this->_revisions_obj->create_revision();
312
return $updated_rows;
313
} // End save_settings
314
199
$value = $this->_settings['form_structure'] = $form_data;
200
}
201
}
202
+ // If the texts where not defined previously or the thank you page is empty populate them with the default values
203
+ elseif (
204
+ (
205
+ $option == 'vs_all_texts' ||
206
+ $option == 'fp_return_page'
207
+ ) &&
208
empty( $value )
209
)
210
{
310
array( '%d' )
311
);
312
313
+ if($updated_rows !== false && (!isset($params['preview']) || isset($params['cff-revisions-in-preview']))) $this->_revisions_obj->create_revision();
314
return $updated_rows;
315
} // End save_settings
316
inc/cpcff_page_builders.inc.php CHANGED
@@ -32,6 +32,12 @@ if(!class_exists('CPCFF_PAGE_BUILDERS'))
32
// Elementor
33
add_action( 'elementor/widgets/widgets_registered', array($instance, 'elementor_editor') );
34
add_action( 'elementor/elements/categories_registered', array($instance, 'elementor_editor_category') );
35
} // End init
36
37
public function after_setup_theme()
@@ -84,7 +90,8 @@ if(!class_exists('CPCFF_PAGE_BUILDERS'))
84
85
public function elementor_editor()
86
{
87
- wp_enqueue_style('cp_calculatedfieldsf_elementor_editor_css', plugins_url('/pagebuilders/elementor/assets/elementor.css', CP_CALCULATEDFIELDSF_MAIN_FILE_PATH));
88
require_once CP_CALCULATEDFIELDSF_BASE_PATH.'/pagebuilders/elementor/elementor.pb.php';
89
} // End elementor_editor
90
32
// Elementor
33
add_action( 'elementor/widgets/widgets_registered', array($instance, 'elementor_editor') );
34
add_action( 'elementor/elements/categories_registered', array($instance, 'elementor_editor_category') );
35
+
36
+ // Beaver builder
37
+ if(class_exists('FLBuilder'))
38
+ {
39
+ include_once CP_CALCULATEDFIELDSF_BASE_PATH.'/pagebuilders/beaverbuilder/cff.inc.php';
40
+ }
41
} // End init
42
43
public function after_setup_theme()
90
91
public function elementor_editor()
92
{
93
+ if(is_admin())
94
+ wp_enqueue_style('cp_calculatedfieldsf_elementor_editor_css', plugins_url('/pagebuilders/elementor/assets/elementor.css', CP_CALCULATEDFIELDSF_MAIN_FILE_PATH));
95
require_once CP_CALCULATEDFIELDSF_BASE_PATH.'/pagebuilders/elementor/elementor.pb.php';
96
} // End elementor_editor
97
inc/cpcff_revisions.inc.php CHANGED
@@ -33,7 +33,7 @@ if(!class_exists('CPCFF_REVISIONS'))
33
/**
34
* The number of revisions per form
35
*/
36
- private $_max = 10;
37
38
/**
39
* Constructs a CPCFF_REVISIONS object.
33
/**
34
* The number of revisions per form
35
*/
36
+ private $_max = 20;
37
38
/**
39
* Constructs a CPCFF_REVISIONS object.
inc/cpcff_session.inc.php CHANGED
@@ -91,7 +91,7 @@ if( !class_exists( 'CP_SESSION' ) )
91
92
private function _unset_var( $name )
93
{
94
- unset( $_SESSION[ $name ] );
95
$transient = $this->_get_var_name( $name );
96
delete_transient( $transient );
97
}
91
92
private function _unset_var( $name )
93
{
94
+ if(isset($_SESSION[$name])) unset( $_SESSION[ $name ] );
95
$transient = $this->_get_var_name( $name );
96
delete_transient( $transient );
97
}
js/JSMin.php CHANGED
@@ -104,10 +104,6 @@ class JSMin {
104
}
105
106
$mbIntEnc = null;
107
- if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
108
- $mbIntEnc = mb_internal_encoding();
109
- mb_internal_encoding('8bit');
110
- }
111
$this->input = str_replace("\r\n", "\n", $this->input);
112
$this->inputLength = strlen($this->input);
113
@@ -127,9 +123,6 @@ class JSMin {
127
} elseif ($this->a === "\n") {
128
if ($this->b === ' ') {
129
$command = self::ACTION_DELETE_A_B;
130
-
131
- // in case of mbstring.func_overload & 2, must check for null b,
132
- // otherwise mb_strpos will give WARNING
133
} elseif ($this->b === null
134
|| (false === strpos('{[(+-!~', $this->b)
135
&& ! $this->isAlphaNum($this->b))) {
104
}
105
106
$mbIntEnc = null;
107
$this->input = str_replace("\r\n", "\n", $this->input);
108
$this->inputLength = strlen($this->input);
109
123
} elseif ($this->a === "\n") {
124
if ($this->b === ' ') {
125
$command = self::ACTION_DELETE_A_B;
126
} elseif ($this->b === null
127
|| (false === strpos('{[(+-!~', $this->b)
128
&& ! $this->isAlphaNum($this->b))) {
js/fbuilder-pro-public.jquery.js CHANGED
@@ -284,6 +284,7 @@
284
.attr( 'autocomplete', ( ( this.autocomplete ) ? 'on' : 'off' ) )
285
.find( 'input,select' )
286
.blur( function(){ try{ $(this).valid(); }catch(e){};} );
287
}
288
});
289
@@ -364,6 +365,37 @@
364
userhelpTooltip:false,
365
csslayout:"",
366
init:function(){},
367
getField: function(f){return $.fbuilder['forms'][this.form_identifier].getItem(f);},
368
show:function()
369
{
@@ -516,7 +548,11 @@
516
for( var i = 0, h = items.length; i < h; i++ )
517
{
518
if( typeof items[ i ] == 'string' ) items[i] = $.fbuilder[ 'forms' ][ identifier ].getItem( items[i] );
519
- if( isNotFirstTime && items[i] && items[i].usedInEquations ) $.fbuilder[ 'calculator' ].enqueueEquation( identifier, items[i].usedInEquations );
520
if( typeof items[ i ][ 'showHideDep' ] != 'undefined' )
521
{
522
var list = items[ i ][ 'showHideDep' ]( toShow, toHide, hiddenByContainer );
284
.attr( 'autocomplete', ( ( this.autocomplete ) ? 'on' : 'off' ) )
285
.find( 'input,select' )
286
.blur( function(){ try{ $(this).valid(); }catch(e){};} );
287
+ if(!this.autocomplete) form.find('input[name*="fieldname"]').attr('autocomplete', 'new-password');
288
}
289
});
290
365
userhelpTooltip:false,
366
csslayout:"",
367
init:function(){},
368
+ _getAttr:function(attr)
369
+ {
370
+ var me = this, f, v = $.trim(me[attr]);
371
+ if($.isNumeric(v)) return parseFloat(v);
372
+ f = (/^fieldname\d+#x2F;i.test(v)) ? me.getField(v) : false;
373
+ if(f)
374
+ {
375
+ v = f.val();
376
+ if(f.ftype == 'fdate') return new Date(v*86400000);
377
+ if($.isNumeric(v)) return parseFloat(v);
378
+ return v.replace(/^"+/, '').replace(/"+#x2F;, '');
379
+ }
380
+ return v;
381
+ },
382
+ _setHndl:function(attr, one)
383
+ {
384
+ var me = this, v = $.trim(me[attr]);
385
+ if($.isNumeric(v)) return;
386
+ var s = (/^fieldname\d+#x2F;i.test(v)) ? '[id*="'+v+me.form_identifier+'"]' : v,
387
+ i = (one) ? 'one' : 'on';
388
+ if('string' == typeof s && !/^\s*#x2F;.test(s))
389
+ {
390
+ s = $.trim(s);
391
+ if(!$.isNumeric(s.charAt(0)))
392
+ {
393
+ $(document)[i]('change depEvent', s, function(evt){
394
+ if(me['set_'+attr]) me['set_'+attr](me._getAttr(attr), $(evt.target).hasClass('ignore'));
395
+ });
396
+ }
397
+ }
398
+ },
399
getField: function(f){return $.fbuilder['forms'][this.form_identifier].getItem(f);},
400
show:function()
401
{
548
for( var i = 0, h = items.length; i < h; i++ )
549
{
550
if( typeof items[ i ] == 'string' ) items[i] = $.fbuilder[ 'forms' ][ identifier ].getItem( items[i] );
551
+ if(isNotFirstTime && items[i])
552
+ {
553
+ $('[name="'+items[i].name+'"]').trigger('depEvent');
554
+ if(items[i].usedInEquations ) $.fbuilder[ 'calculator' ].enqueueEquation( identifier, items[i].usedInEquations );
555
+ }
556
if( typeof items[ i ][ 'showHideDep' ] != 'undefined' )
557
{
558
var list = items[ i ][ 'showHideDep' ]( toShow, toHide, hiddenByContainer );
js/fields-admin/02_fbuilder.fcurrency.js CHANGED
@@ -102,6 +102,6 @@
102
},
103
showRangeIntance: function()
104
{
105
- return '<div class="clearer"></div><div class="column"><label>Min</label><br /><input name="sMin" id="sMin" value="'+$.fbuilder.htmlEncode(this.min)+'"></div><div class="column"><label>Max</label><br /><input name="sMax" id="sMax" value="'+$.fbuilder.htmlEncode(this.max)+'"></div><div class="clearer">Enter the min/max values as numbers, and not as currencies</div>';
106
}
107
});
102
},
103
showRangeIntance: function()
104
{
105
+ return '<div class="clearer"></div><div class="column"><label>Min</label><br /><input name="sMin" id="sMin" value="'+$.fbuilder.htmlEncode(this.min)+'"></div><div class="column"><label>Max</label><br /><input name="sMax" id="sMax" value="'+$.fbuilder.htmlEncode(this.max)+'"></div><div class="clearer" style="margin-bottom:10px;">Enter the min/max values as numbers, and not as currencies.<br /><i>It is possible to associate other fields in the form to the attributes "min" and "max". Ex: fieldname1</i></div>';
106
}
107
});
js/fields-admin/02_fbuilder.fnumber.js CHANGED
@@ -58,6 +58,6 @@
58
},
59
showRangeIntance: function()
60
{
61
- return '<div class="column"><label>Min</label><br /><input name="sMin" id="sMin" value="'+$.fbuilder.htmlEncode(this.min)+'"></div><div class="column"><label>Max</label><br /><input name="sMax" id="sMax" value="'+$.fbuilder.htmlEncode(this.max)+'"></div><div class="clearer"></div>';
62
}
63
});
58
},
59
showRangeIntance: function()
60
{
61
+ return '<div class="column"><label>Min</label><br /><input name="sMin" id="sMin" value="'+$.fbuilder.htmlEncode(this.min)+'"></div><div class="column"><label>Max</label><br /><input name="sMax" id="sMax" value="'+$.fbuilder.htmlEncode(this.max)+'"></div><div style="margin-bottom:10px;" class="clearer"><i>It is possible to associate other fields in the form to the attributes "min" and "max". Ex: fieldname1</i></div>';
62
}
63
});
js/fields-admin/09_fbuilder.ffile.js CHANGED
@@ -17,6 +17,9 @@
17
accept:"",
18
upload_size:"",
19
multiple:false,
20
display:function()
21
{
22
return '<div class="fields '+this.name+'" id="field'+this.form_identifier+'-'+this.index+'" title="'+this.name+'"><div class="arrow ui-icon ui-icon-play "></div><div title="Delete" class="remove ui-icon ui-icon-trash "></div><div title="Duplicate" class="copy ui-icon ui-icon-copy "></div><label>'+this.title+''+((this.required)?"*":"")+'</label><div class="dfield"><input type="file" disabled class="field '+this.size+'" /><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
@@ -27,12 +30,15 @@
27
{s:"#sSize",e:"change", l:"size"},
28
{s:"#sAccept",e:"change keyup", l:"accept"},
29
{s:"#sUpload_size",e:"change keyup", l:"upload_size"},
30
- {s:"#sMultiple",e:"click", l:"multiple",f:function(el){return el.is(":checked");}}
31
];
32
$.fbuilder.controls[ 'ffields' ].prototype.editItemEvents.call(this,evt);
33
},
34
showSpecialDataInstance: function()
35
{
36
- return '<div><label>Accept these file extensions [<a class="helpfbuilder" text="Extensions comma separated and without the dot.\n\nExample: jpg,png,gif,pdf">help?</a>]</label><br /><input name="sAccept" id="sAccept" value="'+$.fbuilder.htmlEncode(this.accept)+'" class="large"></div><div><label>Maximun upload size in kB [<a class="helpfbuilder" text="1024 kB = 1 MB.\n\nThe support for this HTML5 feature may be partially available or not available in some browsers.">help?</a>]</label><br /><input name="sUpload_size" id="sUpload_size" value="'+$.fbuilder.htmlEncode(this.upload_size)+'" class="large"></div><div><label><input type="checkbox" id="sMultiple" name="sMultiple" '+( ( typeof this.multiple != 'undefined' && this.multiple ) ? 'CHECKED' : '' )+' /> Upload multiple files</label></div><div class="clearer"></div>';
37
}
38
});
17
accept:"",
18
upload_size:"",
19
multiple:false,
20
+ preview: false,
21
+ thumb_width: '80px',
22
+ thumb_height: '',
23
display:function()
24
{
25
return '<div class="fields '+this.name+'" id="field'+this.form_identifier+'-'+this.index+'" title="'+this.name+'"><div class="arrow ui-icon ui-icon-play "></div><div title="Delete" class="remove ui-icon ui-icon-trash "></div><div title="Duplicate" class="copy ui-icon ui-icon-copy "></div><label>'+this.title+''+((this.required)?"*":"")+'</label><div class="dfield"><input type="file" disabled class="field '+this.size+'" /><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
30
{s:"#sSize",e:"change", l:"size"},
31
{s:"#sAccept",e:"change keyup", l:"accept"},
32
{s:"#sUpload_size",e:"change keyup", l:"upload_size"},
33
+ {s:"#sThumbWidth",e:"change keyup", l:"thumb_width"},
34
+ {s:"#sThumbHeight",e:"change keyup", l:"thumb_height"},
35
+ {s:"#sMultiple",e:"click", l:"multiple",f:function(el){return el.is(":checked");}},
36
+ {s:"#sPreview",e:"click", l:"preview",f:function(el){return el.is(":checked");}}
37
];
38
$.fbuilder.controls[ 'ffields' ].prototype.editItemEvents.call(this,evt);
39
},
40
showSpecialDataInstance: function()
41
{
42
+ return '<div><label>Accept these file extensions [<a class="helpfbuilder" text="Extensions comma separated and without the dot.\n\nExample: jpg,png,gif,pdf">help?</a>]</label><br /><input name="sAccept" id="sAccept" value="'+$.fbuilder.htmlEncode(this.accept)+'" class="large"></div><div><label>Maximum upload size in kB [<a class="helpfbuilder" text="1024 kB = 1 MB.\n\nThe support for this HTML5 feature may be partially available or not available in some browsers.">help?</a>]</label><br /><input name="sUpload_size" id="sUpload_size" value="'+$.fbuilder.htmlEncode(this.upload_size)+'" class="large"></div><div><label><input type="checkbox" id="sMultiple" name="sMultiple" '+( ( typeof this.multiple != 'undefined' && this.multiple ) ? 'CHECKED' : '' )+' /> Upload multiple files</label></div><hr /><div><label><input type="checkbox" id="sPreview" name="sPreview" '+( ( typeof this.preview != 'undefined' && this.preview ) ? 'CHECKED' : '' )+' /> Show preview of images</label></div><div><label>Thumbnail width</label><input type="text" id="sThumbWidth" name="sThumbWidth" value="'+$.fbuilder.htmlEncode(this.thumb_width)+'" class="large" /></div><div><label>Thumbnail height</label><input type="text" id="sThumbHeight" name="sThumbHeight" value="'+$.fbuilder.htmlEncode(this.thumb_height)+'" class="large" /></div><hr /><div class="clearer"></div>';
43
}
44
});
js/fields-admin/fbuilder.fcalculated.js CHANGED
@@ -50,6 +50,39 @@
50
$.fbuilder.reloadItems({'field':e.data.obj});
51
}
52
});
53
$('.displayWizard').bind("click", {obj: this}, function(e)
54
{
55
e.preventDefault();
@@ -312,11 +345,14 @@
312
}
313
};
314
315
- var out = '<label>Set Equation</label><textarea class="large" name="sEq" id="sEq" style="height:150px;">'+me.eq+'</textarea><label>Operands</label><div style="float:right;"><a href="javascript:window.open(\'http://wordpress.dwbooster.com/includes/calculated-field/equations.html\', \'_blak\');">Read an equation tutorial</a></div><div class="groupBox"><select id="sFieldList">';
316
317
var items = this.fBuild.getItems(),
318
invalidFields = { 'fSectionBreak':1, 'fPageBreak':1, 'fsummary':1, 'ffieldset':1, 'fdiv':1, 'fMedia':1, 'fButton':1, 'fhtml':1, 'ffile':1 };
319
320
for( var i in items )
321
{
322
var item = items[ i ];
@@ -325,6 +361,8 @@
325
var fName = item[ 'name' ],
326
fTitle = item[ 'title' ];
327
328
fName = fName.replace( /'/g, "\'" ).replace( /"/g, '\"' );
329
out += '<option value="' + fName + '">'+item[ 'name' ] + ( ( item[ 'title' ] && !/^\s*#x2F;.test( item[ 'title' ] ) ) ? '('+item[ 'title' ] + ')' : '' ) + '</option>';
330
}
50
$.fbuilder.reloadItems({'field':e.data.obj});
51
}
52
});
53
+ $(document).on('click', '.cff-light-modal-close-icon', function(){$('[id="cff-advanced-equation-editor"]').remove();});
54
+ $("#sAdvancedEditor").bind("click", {obj: this}, function(e)
55
+ {
56
+ $(window).unbind('message');
57
+ $(window).bind('message', function(event){$('#sEq').val(event.originalEvent.data).change();});
58
+ var advEditor = '<div class="cff-light-modal" id="cff-advanced-equation-editor" role="dialog" aria-hidden="false">'+
59
+ '<div class="cff-light-modal-content">'+
60
+ '<a href="#" class="cff-light-modal-close-icon" aria-label="close" title="Close">&times;</a>'+
61
+ '<div class="cff-light-modal-body">'+
62
+ '<iframe width="560" height="315" frameborder="0" allowfullscreen scrolling="no"></iframe>'+
63
+ '</div>'+
64
+ '</div>'+
65
+ '</div>';
66
+
67
+ $('body').append(advEditor);
68
+ $('[id="cff-advanced-equation-editor"] iframe').on(
69
+ 'load',
70
+ function(){
71
+ var args = {};
72
+ args.code = e.data.obj.eq;
73
+ if('items' in e.data.obj) args.fields = e.data.obj.items;
74
+ if( $.fbuilder[ 'modules' ] )
75
+ {
76
+ args.operations = {};
77
+ for(var i in $.fbuilder[ 'modules' ])
78
+ $.extend(true, args.operations, $.fbuilder[ 'modules' ][i]['toolbars'])
79
+ }
80
+ this.contentWindow.postMessage(JSON.stringify(args), '*');
81
+ }
82
+ ).attr('src', '//fxeditor.dwbooster.com/?open_by=cff' );
83
+
84
+ document.location.href="#cff-advanced-equation-editor";
85
+ });
86
$('.displayWizard').bind("click", {obj: this}, function(e)
87
{
88
e.preventDefault();
345
}
346
};
347
348
+ var out = '<label>Set Equation</label><textarea class="large" name="sEq" id="sEq" style="height:150px;">'+me.eq+'</textarea>'+
349
+ '<div id="sAdvancedEditor" title="The Advance Editor is still in experimental state">Advanced Equation\'s Editor</div>'+
350
+ '<label>Operands</label><div style="float:right;"><a href="javascript:window.open(\'http://wordpress.dwbooster.com/includes/calculated-field/equations.html\', \'_blak\');">Read an equation tutorial</a></div><div class="groupBox"><select id="sFieldList">';
351
352
var items = this.fBuild.getItems(),
353
invalidFields = { 'fSectionBreak':1, 'fPageBreak':1, 'fsummary':1, 'ffieldset':1, 'fdiv':1, 'fMedia':1, 'fButton':1, 'fhtml':1, 'ffile':1 };
354
355
+ me.items = {}
356
for( var i in items )
357
{
358
var item = items[ i ];
361
var fName = item[ 'name' ],
362
fTitle = item[ 'title' ];
363
364
+ me.items[fName] = {label:fTitle, type:item.ftype};
365
+
366
fName = fName.replace( /'/g, "\'" ).replace( /"/g, '\"' );
367
out += '<option value="' + fName + '">'+item[ 'name' ] + ( ( item[ 'title' ] && !/^\s*#x2F;.test( item[ 'title' ] ) ) ? '('+item[ 'title' ] + ')' : '' ) + '</option>';
368
}
js/fields-public/02_fbuilder.fcurrency.js CHANGED
@@ -18,7 +18,20 @@
18
min:"",
19
max:"",
20
formatDynamically:false,
21
-
22
getFormattedValue:function( value )
23
{
24
if(value == '') return value;
@@ -58,9 +71,14 @@
58
return value;
59
}
60
},
61
show:function()
62
{
63
- return '<div class="fields '+this.csslayout+' '+this.name+' cff-currency-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 '+(( this.readonly )? 'readonly' : '' )+' id="'+this.name+'" name="'+this.name+'" class="field cffcurrency '+this.size+((this.required)?" required":"")+'" type="text" value="'+$.fbuilder.htmlEncode( (this.formatDynamically) ? this.getFormattedValue( this.predefined ) : this.predefined )+'" '+( ( !/^\s*#x2F;.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this.min, this.thousandSeparator, this.centSeparator )+'" ' : '' )+( ( !/^\s*#x2F;.test( this.max) ) ? ' max="'+$.fbuilder.parseVal( this.max, this.thousandSeparator, this.centSeparator )+'" ' : '' )+' /><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
64
},
65
after_show:function()
66
{
18
min:"",
19
max:"",
20
formatDynamically:false,
21
+ set_min:function(v, rmv)
22
+ {
23
+ var e = $('[id="'+this.name+'"]');
24
+ if(rmv) e.removeAttr('min');
25
+ else e.attr('min', v);
26
+ e.valid();
27
+ },
28
+ set_max:function(v, rmv)
29
+ {
30
+ var e = $('[id="'+this.name+'"]');
31
+ if(rmv) e.removeAttr('max');
32
+ else e.attr('max', v);
33
+ e.valid();
34
+ },
35
getFormattedValue:function( value )
36
{
37
if(value == '') return value;
71
return value;
72
}
73
},
74
+ init:function()
75
+ {
76
+ if(!/^\s*#x2F;.test(this.min)) this._setHndl('min');
77
+ if(!/^\s*#x2F;.test(this.max)) this._setHndl('max');
78
+ },
79
show:function()
80
{
81
+ return '<div class="fields '+this.csslayout+' '+this.name+' cff-currency-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 '+(( this.readonly )? 'readonly' : '' )+' id="'+this.name+'" name="'+this.name+'" class="field cffcurrency '+this.size+((this.required)?" required":"")+'" type="text" value="'+$.fbuilder.htmlEncode( (this.formatDynamically) ? this.getFormattedValue( this.predefined ) : this.predefined )+'" '+( ( !/^\s*#x2F;.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this._getAttr('min'), this.thousandSeparator, this.centSeparator )+'" ' : '' )+( ( !/^\s*#x2F;.test( this.max) ) ? ' max="'+$.fbuilder.parseVal( this._getAttr('max'), this.thousandSeparator, this.centSeparator )+'" ' : '' )+' /><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
82
},
83
after_show:function()
84
{
js/fields-public/02_fbuilder.fnumber.js CHANGED
@@ -17,6 +17,20 @@
17
formatDynamically:false,
18
dformat:"digits",
19
formats:new Array("digits","number"),
20
getFormattedValue:function( value )
21
{
22
if(value == '') return value;
@@ -48,11 +62,16 @@
48
return value;
49
}
50
},
51
show:function()
52
{
53
var _type = ( this.dformat == 'digits' || ( /^\s*#x2F;.test( this.thousandSeparator ) && /^\s*\.\s*#x2F;.test( this.decimalSymbol ) ) ) ? 'number' : 'text';
54
55
- return '<div class="fields '+this.csslayout+' '+this.name+' cff-number-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 id="'+this.name+'" name="'+this.name+'" '+( ( !/^\s*#x2F;.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this.min, this.thousandSeparator, this.decimalSymbol )+'" ' : '' )+( ( !/^\s*#x2F;.test( this.max) ) ? ' max="'+$.fbuilder.parseVal( this.max, this.thousandSeparator, this.decimalSymbol )+'" ' : '' )+' class="field '+this.dformat+' '+this.size+((this.required)?" required":"")+'" type="'+_type+'" value="'+$.fbuilder.htmlEncode((this.formatDynamically) ? this.getFormattedValue(this.predefined) : this.predefined)+'" '+((this.readonly)?'readonly':'')+' /><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
56
},
57
after_show:function()
58
{
17
formatDynamically:false,
18
dformat:"digits",
19
formats:new Array("digits","number"),
20
+ set_min:function(v, rmv)
21
+ {
22
+ var e = $('[id="'+this.name+'"]');
23
+ if(rmv) e.removeAttr('min');
24
+ else e.attr('min', v);
25
+ e.valid();
26
+ },
27
+ set_max:function(v, rmv)
28
+ {
29
+ var e = $('[id="'+this.name+'"]');
30
+ if(rmv) e.removeAttr('max');
31
+ else e.attr('max', v);
32
+ e.valid();
33
+ },
34
getFormattedValue:function( value )
35
{
36
if(value == '') return value;
62
return value;
63
}
64
},
65
+ init:function()
66
+ {
67
+ if(!/^\s*#x2F;.test(this.min)) this._setHndl('min');
68
+ if(!/^\s*#x2F;.test(this.max)) this._setHndl('max');
69
+ },
70
show:function()
71
{
72
var _type = ( this.dformat == 'digits' || ( /^\s*#x2F;.test( this.thousandSeparator ) && /^\s*\.\s*#x2F;.test( this.decimalSymbol ) ) ) ? 'number' : 'text';
73
74
+ return '<div class="fields '+this.csslayout+' '+this.name+' cff-number-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 id="'+this.name+'" name="'+this.name+'" '+( ( !/^\s*#x2F;.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this._getAttr('min'), this.thousandSeparator, this.decimalSymbol )+'" ' : '' )+( ( !/^\s*#x2F;.test(this.max) ) ? ' max="'+$.fbuilder.parseVal( this._getAttr('max'), this.thousandSeparator, this.decimalSymbol )+'" ' : '' )+' class="field '+this.dformat+' '+this.size+((this.required)?" required":"")+'" type="'+_type+'" value="'+$.fbuilder.htmlEncode((this.formatDynamically) ? this.getFormattedValue(this.predefined) : this.predefined)+'" '+((this.readonly)?'readonly':'')+' /><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
75
},
76
after_show:function()
77
{
js/fields-public/02_fbuilder.fslider.js CHANGED
@@ -19,26 +19,6 @@
19
minCaption:"",
20
maxCaption:"",
21
caption:"{0}",
22
- _getAttr:function(attr)
23
- {
24
- var me = this, f, v = $.trim(me[attr]);
25
- if($.isNumeric(v)) return parseFloat(v);
26
- f = (/^fieldname\d+#x2F;i.test(v)) ? me.getField(v) : false;
27
- if(f)
28
- {
29
- v = f.val();
30
- if($.isNumeric(v)) return parseFloat(v);
31
- }
32
- return 0;
33
- },
34
- _setHndl:function(attr, one)
35
- {
36
- var me = this, v = $.trim(me[attr]);
37
- if($.isNumeric(v)) return;
38
- var s = (/^fieldname\d+#x2F;i.test(v)) ? '[id*="'+v+me.form_identifier+'"]' : v,
39
- i = (one) ? 'one' : 'on';
40
- $(document)[i]('change', s, function(){ if(me['set_'+attr]) me['set_'+attr](me._getAttr(attr));});
41
- },
42
_setThousandsSeparator : function(v)
43
{
44
v = $.fbuilder.parseVal( v, this.thousandSeparator, this.centSeparator );
@@ -98,12 +78,14 @@
98
},
99
init:function()
100
{
101
this.min = (/^\s*#x2F;.test(this.min)) ? 0 : $.trim(this.min);
102
this.max = (/^\s*#x2F;.test(this.max)) ? 100 : $.trim(this.max);
103
this.step = (/^\s*#x2F;.test(this.step)) ? 1 : $.trim(this.step);
104
- this.predefined = (/^\s*#x2F;.test(this.predefined)) ? this.min : $.trim(this.predefined);
105
- this.predefinedMin = (/^\s*#x2F;.test(this.predefinedMin))? this.min : $.trim(this.predefinedMin);
106
- this.predefinedMax = (/^\s*#x2F;.test(this.predefinedMax))? this.max : $.trim(this.predefinedMax);
107
108
this._setHndl('min');
109
this._setHndl('max');
@@ -116,24 +98,27 @@
116
{
117
return '<div class="fields '+this.csslayout+' '+this.name+' cff-slider-field" id="field'+this.form_identifier+'-'+this.index+'"><label for="'+this.name+'">'+this.title+'</label><div class="dfield slider-container"><input id="'+this.name+'" name="'+this.name+'" class="field" type="hidden" value="'+$.fbuilder.htmlEncode(this._getAttr('predefined'))+'"/><div id="'+this.name+'_slider" class="slider '+this.size+'"></div><div class="corner-captions '+this.size+'"><span class="left-corner">'+this.minCaption+'</span><span class="right-corner" style="float:right;">'+this.maxCaption+'</span></div><div id="'+this.name+'_caption" class="slider-caption"></div><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
118
},
119
- set_min : function(v)
120
{
121
var e = $('[id="'+this.name+'_slider"]'), c = this.val(), r = false;
122
e.slider( 'option', 'min', v );
123
if($.isArray(c)){if(c[0] < v){c[0] = v; r = true;}}
124
else if(c < v){c = v; r = true;}
125
if(r) this.setVal(c);
126
},
127
- set_max : function(v)
128
{
129
var e = $('[id="'+this.name+'_slider"]'), c = this.val(), r = false;
130
e.slider( 'option', 'max', v );
131
if($.isArray(c)){if(v < c[1]){c[1] = v; r = true;}}
132
else if(v < c){c = v; r = true;}
133
if(r) this.setVal(c);
134
},
135
- set_step : function(v)
136
{
137
$('[id="'+this.name+'_slider"]').slider( "option", "step", v );
138
},
139
after_show:function()
19
minCaption:"",
20
maxCaption:"",
21
caption:"{0}",
22
_setThousandsSeparator : function(v)
23
{
24
v = $.fbuilder.parseVal( v, this.thousandSeparator, this.centSeparator );
78
},
79
init:function()
80
{
81
+ function _toNumber(n){return (new String(n)).replace(/[^\d\.]/g,'')*1;};
82
+
83
this.min = (/^\s*#x2F;.test(this.min)) ? 0 : $.trim(this.min);
84
this.max = (/^\s*#x2F;.test(this.max)) ? 100 : $.trim(this.max);
85
this.step = (/^\s*#x2F;.test(this.step)) ? 1 : $.trim(this.step);
86
+ this.predefined = (/^\s*#x2F;.test(this.predefined)) ? this.min : _toNumber(this.predefined);
87
+ this.predefinedMin = (/^\s*#x2F;.test(this.predefinedMin))? this.min : _toNumber(this.predefinedMin);
88
+ this.predefinedMax = (/^\s*#x2F;.test(this.predefinedMax))? this.max : _toNumber(this.predefinedMax);
89
90
this._setHndl('min');
91
this._setHndl('max');
98
{
99
return '<div class="fields '+this.csslayout+' '+this.name+' cff-slider-field" id="field'+this.form_identifier+'-'+this.index+'"><label for="'+this.name+'">'+this.title+'</label><div class="dfield slider-container"><input id="'+this.name+'" name="'+this.name+'" class="field" type="hidden" value="'+$.fbuilder.htmlEncode(this._getAttr('predefined'))+'"/><div id="'+this.name+'_slider" class="slider '+this.size+'"></div><div class="corner-captions '+this.size+'"><span class="left-corner">'+this.minCaption+'</span><span class="right-corner" style="float:right;">'+this.maxCaption+'</span></div><div id="'+this.name+'_caption" class="slider-caption"></div><span class="uh">'+this.userhelp+'</span></div><div class="clearer"></div></div>';
100
},
101
+ set_min:function(v, ignore)
102
{
103
var e = $('[id="'+this.name+'_slider"]'), c = this.val(), r = false;
104
+ if(ignore) v = 0;
105
e.slider( 'option', 'min', v );
106
if($.isArray(c)){if(c[0] < v){c[0] = v; r = true;}}
107
else if(c < v){c = v; r = true;}
108
if(r) this.setVal(c);
109
},
110
+ set_max:function(v, ignore)
111
{
112
var e = $('[id="'+this.name+'_slider"]'), c = this.val(), r = false;
113
+ if(ignore) v = 100;
114
e.slider( 'option', 'max', v );
115
if($.isArray(c)){if(v < c[1]){c[1] = v; r = true;}}
116
else if(v < c){c = v; r = true;}
117
if(r) this.setVal(c);
118
},
119
+ set_step:function(v, ignore)
120
{
121
+ if(ignore) v = 1;
122
$('[id="'+this.name+'_slider"]').slider( "option", "step", v );
123
},
124
after_show:function()
js/fields-public/04_fbuilder.fdate.js CHANGED
@@ -36,30 +36,6 @@
36
defaultTime:"",
37
working_dates:[true,true,true,true,true,true,true],
38
39
- _getAttr:function(attr)
40
- {
41
- var me = this, f, v = $.trim(me[attr]);
42
- if($.isNumeric(v)) return parseFloat(v);
43
- f = (/^fieldname\d+#x2F;i.test(v)) ? me.getField(v) : false;
44
- if(f)
45
- {
46
- v = f.val();
47
- if(f.ftype == 'fdate') return new Date(v*86400000);
48
- if($.isNumeric(v)) return parseFloat(v);
49
- return v.replace(/^"+/, '').replace(/"+#x2F;, '');
50
- }
51
- return v;
52
- },
53
- _setHndl:function(attr, one)
54
- {
55
- var me = this, v = $.trim(me[attr]);
56
- if(/^fieldname\d+#x2F;i.test(v))
57
- {
58
- var s = '[id*="'+v+me.form_identifier+'"]',
59
- i = (one) ? 'one' : 'on';
60
- $(document)[i]('change', s, function(){ if(me['set_'+attr]) me['set_'+attr](me._getAttr(attr));});
61
- }
62
- },
63
_set_Events : function()
64
{
65
var me = this,
@@ -236,21 +212,21 @@
236
}
237
$( '#'+me.name ).val( str ).change();
238
},
239
- set_minDate:function(v)
240
{
241
var e = $('[id*="'+this.name+'"].hasDatepicker');
242
if(e.length)
243
{
244
- e.datepicker('option', 'minDate', v);
245
e.change();
246
}
247
},
248
- set_maxDate:function(v)
249
{
250
var e = $('[id*="'+this.name+'"].hasDatepicker');
251
if(e.length)
252
{
253
- e.datepicker('option', 'maxDate', v);
254
e.change();
255
}
256
},
36
defaultTime:"",
37
working_dates:[true,true,true,true,true,true,true],
38
39
_set_Events : function()
40
{
41
var me = this,
212
}
213
$( '#'+me.name ).val( str ).change();
214
},
215
+ set_minDate:function(v, ignore)
216
{
217
var e = $('[id*="'+this.name+'"].hasDatepicker');
218
if(e.length)
219
{
220
+ e.datepicker('option', 'minDate', (ignore) ? null : v);
221
e.change();
222
}
223
},
224
+ set_maxDate:function(v, ignore)
225
{
226
var e = $('[id*="'+this.name+'"].hasDatepicker');
227
if(e.length)
228
{
229
+ e.datepicker('option', 'maxDate', (ignore) ? null : v);
230
e.change();
231
}
232
},
js/fields-public/09_fbuilder.ffile.js CHANGED
@@ -10,6 +10,13 @@
10
accept:"",
11
upload_size:"",
12
multiple:false,
13
show:function()
14
{
15
this.accept = $.fbuilder.htmlEncode($.trim(this.accept));
@@ -47,13 +54,31 @@
47
});
48
49
$( '#'+me.name ).change( function(){
50
$( this ).siblings( 'span.files-list' ).remove();
51
- if( this.files.length > 1 )
52
{
53
- var filesList = [];
54
- for( var i = 0, h = this.files.length; i < h; i++ )
55
- filesList.push( this.files[ i ].name )
56
- $( this ).after( '<span class="files-list">'+filesList.join( ', ' )+'</span>' );
57
}
58
});
59
}
10
accept:"",
11
upload_size:"",
12
multiple:false,
13
+ preview: false,
14
+ thumb_width: '80px',
15
+ thumb_height: '',
16
+ init: function(){
17
+ this.thumb_width = $.trim(this.thumb_width);
18
+ this.thumb_height = $.trim(this.thumb_height);
19
+ },
20
show:function()
21
{
22
this.accept = $.fbuilder.htmlEncode($.trim(this.accept));
54
});
55
56
$( '#'+me.name ).change( function(){
57
+ var h = this.files.length, n = 0;
58
$( this ).siblings( 'span.files-list' ).remove();
59
+ if(1 <= h)
60
{
61
+ var filesContainer = $('<span class="files-list"></span>');
62
+ for( var i = 0; i < h; i++ )
63
+ {
64
+ (function(i, file){
65
+ if(me.preview && file.type.match('image.*') && 'FileReader' in window)
66
+ {
67
+ var reader = new FileReader();
68
+ reader.onload = function (e) {
69
+ var img = $('<img>');
70
+ img.attr('src', e.target.result).css('maxWidth', '100%');
71
+ if(me.thumb_height != '') img.attr('height', me.thumb_height);
72
+ if(me.thumb_width != '') img.attr('width', me.thumb_width);
73
+ filesContainer.append($('<span>'+(n ? ', ' : '')+'</span>').append(img));
74
+ n++;
75
+ };
76
+ reader.readAsDataURL(file);
77
+ }
78
+ else if(1 < h){filesContainer.append($('<span>').text((n ? ', ' : '')+file.name));n++;}
79
+ })(i, this.files[i]);
80
+ }
81
+ $( this ).after( filesContainer );
82
}
83
});
84
}
js/fields-public/36_fbuilder.acceptance.js CHANGED
@@ -27,9 +27,7 @@
27
return '<div class="fields '+me.csslayout+' '+me.name+' cff-checkbox-field" id="field'+me.form_identifier+'-'+me.index+'"><div class="dfield">'+
28
'<div class="one_column"><label for="'+me.name+'"><input name="'+me.name+'" id="'+me.name+'" class="field required" value="'+$.fbuilder.htmlEncode(me.value)+'" vt="'+$.fbuilder.htmlEncode((/^\s*#x2F;.test(me.value)) ? me.title : me.value)+'" type="checkbox" /> <span>'+
29
$.fbuilder.htmlDecode( label )+''+((me.required)?'<span class="r">*</span>':'')+
30
- '</span></label></div>'+
31
- dlg+
32
- '</div><div class="clearer"></div></div>';
33
},
34
after_show:function()
35
{
27
return '<div class="fields '+me.csslayout+' '+me.name+' cff-checkbox-field" id="field'+me.form_identifier+'-'+me.index+'"><div class="dfield">'+
28
'<div class="one_column"><label for="'+me.name+'"><input name="'+me.name+'" id="'+me.name+'" class="field required" value="'+$.fbuilder.htmlEncode(me.value)+'" vt="'+$.fbuilder.htmlEncode((/^\s*#x2F;.test(me.value)) ? me.title : me.value)+'" type="checkbox" /> <span>'+
29
$.fbuilder.htmlDecode( label )+''+((me.required)?'<span class="r">*</span>':'')+
30
+ '</span></label></div>'+dlg+'<span class="uh"></span></div><div class="clearer"></div></div>';
31
},
32
after_show:function()
33
{
js/fields-public/fbuilder.fcalculated.js CHANGED
@@ -439,6 +439,7 @@
439
while( queue.length )
440
{
441
eq_obj = queue.shift();
442
var field = $( '[id="' + eq_obj.result+'"]' ),
443
result = _calculate( eq_obj.equation, eq_obj.identifier, eq_obj.result),
444
bk = field.data('bk');
@@ -538,7 +539,7 @@
538
var obj = new CalcFieldClss();
539
540
// Associate events to the document for throw the corresponding equations
541
- $( document ).bind('keyup change blur', function(evt)
542
{
543
// If evalequations = 0 the equations shouldn't be evaluated dynamically
544
var t = $( evt.target ),
439
while( queue.length )
440
{
441
eq_obj = queue.shift();
442
+ $.fbuilder['currentEq'] = eq_obj;
443
var field = $( '[id="' + eq_obj.result+'"]' ),
444
result = _calculate( eq_obj.equation, eq_obj.identifier, eq_obj.result),
445
bk = field.data('bk');
539
var obj = new CalcFieldClss();
540
541
// Associate events to the document for throw the corresponding equations
542
+ $( document ).on('keyup change blur', '[id="fbuilder"] :input', function(evt)
543
{
544
// If evalequations = 0 the equations shouldn't be evaluated dynamically
545
var t = $( evt.target ),
js/jQuery.stringify.js CHANGED
@@ -3,7 +3,7 @@ fbuilderjQuery = (typeof fbuilderjQuery != 'undefined' ) ? fbuilderjQuery : jQue
3
fbuilderjQuery(function(){
4
(function($) {
5
$.extend({
6
-
7
stringifyXX : function stringifyXX(obj) {
8
var enc = function(param) {
9
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
@@ -16,14 +16,14 @@ fbuilderjQuery(function(){
16
'"' : '\\"',
17
'\\' : '\\\\'
18
};
19
-
20
escapable.lastIndex = 0;
21
return escapable.test(param) ? param.replace(escapable, function (a) {
22
var c = meta[a];
23
return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
24
}) : param;
25
};
26
-
27
var t = typeof (obj);
28
if (t != "object" || obj === null) {
29
// simple data type
@@ -36,7 +36,7 @@ fbuilderjQuery(function(){
36
for (n in obj) {
37
v = obj[n];
38
t = typeof(v);
39
- if (t!="function")
40
{
41
if (t == "string") v = '"' + enc(v) + '"'; else if (t == "object" && v !== null) v = $.stringifyXX(v);
42
json.push((arr ? "" : '"' + n + '":') + String(v));
3
fbuilderjQuery(function(){
4
(function($) {
5
$.extend({
6
+
7
stringifyXX : function stringifyXX(obj) {
8
var enc = function(param) {
9
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
16
'"' : '\\"',
17
'\\' : '\\\\'
18
};
19
+
20
escapable.lastIndex = 0;
21
return escapable.test(param) ? param.replace(escapable, function (a) {
22
var c = meta[a];
23
return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
24
}) : param;
25
};
26
+
27
var t = typeof (obj);
28
if (t != "object" || obj === null) {
29
// simple data type
36
for (n in obj) {
37
v = obj[n];
38
t = typeof(v);
39
+ if (t!="function" && t!="undefined")
40
{
41
if (t == "string") v = '"' + enc(v) + '"'; else if (t == "object" && v !== null) v = $.stringifyXX(v);
42
json.push((arr ? "" : '"' + n + '":') + String(v));
js/modules/06_connector/admin/module_admin.js ADDED
@@ -0,0 +1,19 @@
1
+ fbuilderjQuery = (typeof fbuilderjQuery != 'undefined' ) ? fbuilderjQuery : jQuery;
2
+ fbuilderjQuery[ 'fbuilder' ] = fbuilderjQuery[ 'fbuilder' ] || {};
3
+ fbuilderjQuery[ 'fbuilder' ][ 'modules' ] = fbuilderjQuery[ 'fbuilder' ][ 'modules' ] || {};
4
+
5
+ fbuilderjQuery[ 'fbuilder' ][ 'modules' ][ 'connector' ] = {
6
+ 'tutorial' : 'https://cff.dwbooster.com/documentation#connection-module',
7
+ 'toolbars' : {
8
+ 'processing' : {
9
+ 'label' : 'Third-party Connection',
10
+ 'buttons' : [
11
+ {
12
+ "value" : "cffProxy",
13
+ "code" : "cffProxy(",
14
+ "tip" : "<p>This operation works as a proxy for third party functions. cffProxy accepts multiple parameters, where the first one must be the third party function, and the other parameters would be pass as the parameters of this third party function. cffProxy pass as the last parameter of the third party function a callback function. From the third party function should be called this callback function, passing to it the result of third party function. <strong>cffProxy( function(callback){ callback(123);})</strong></p>"
15
+ }
16
+ ]
17
+ }
18
+ }
19
+ };
js/modules/06_connector/public/01_connector.js ADDED
@@ -0,0 +1,48 @@
1
+ /*
2
+ * connector.js v0.1
3
+ * By: CALCULATED FIELD PROGRAMMERS
4
+ * Allows connecting with third party modules in the equations
5
+ * Copyright 2019 CODEPEOPLE
6
+ */
7
+
8
+ ;(function(root){
9
+ var lib = {
10
+ records: {}
11
+ };
12
+
13
+ /*** PRIVATE FUNCTIONS ***/
14
+
15
+ /*** PUBLIC FUNCTIONS ***/
16
+
17
+ lib.cff_connector_version = '0.1';
18
+
19
+ // cffProxy( function ) The function should accept a callback
20
+ lib.cffProxy = function(){
21
+ if(typeof fbuilderjQuery == 'undefined' || !arguments.length || typeof arguments[0] != 'function') return;
22
+
23
+ var $ = fbuilderjQuery,
24
+ args = Array.prototype.slice.call(arguments);
25
+ index = args.toString();
26
+
27
+ if(typeof lib.records[index] != 'undefined') return lib.records[index];
28
+ var form_id = (typeof $.fbuilder['currentFormId'] != 'undefined') ? $.fbuilder['currentFormId'] : 'cp_calculatedfieldsf_pform_1',
29
+ aux = (function(eq){
30
+ return function(value){
31
+ lib.records[index] = value;
32
+ $.fbuilder.calculator.enqueueEquation(eq.identifier, [eq]);
33
+ if(!$.fbuilder.calculator.processing_queue)
34
+ {
35
+ $.fbuilder.calculator.processQueue(eq.identifier);
36
+ }
37
+ };
38
+ })($.fbuilder['currentEq']),
39
+ f = args[0];
40
+
41
+ args.shift();
42
+ args.push(aux);
43
+ f.apply(null, args);
44
+ };
45
+
46
+ root.CF_CONNECTOR = lib;
47
+
48
+ })(this);
js/modules/06_connector/public/module_public.js ADDED
@@ -0,0 +1,11 @@
1
+ fbuilderjQuery = ( typeof fbuilderjQuery != 'undefined' ) ? fbuilderjQuery : jQuery;
2
+ fbuilderjQuery[ 'fbuilder' ] = fbuilderjQuery[ 'fbuilder' ] || {};
3
+ fbuilderjQuery[ 'fbuilder' ][ 'modules' ] = fbuilderjQuery[ 'fbuilder' ][ 'modules' ] || {};
4
+
5
+ fbuilderjQuery[ 'fbuilder' ][ 'modules' ][ 'connector' ] = {
6
+ 'prefix' : '',
7
+ 'callback' : function()
8
+ {
9
+ fbuilderjQuery[ 'fbuilder' ][ 'extend_window' ]( fbuilderjQuery[ 'fbuilder' ][ 'modules' ][ 'connector' ][ 'prefix' ], CF_CONNECTOR );
10
+ }
11
+ };
pagebuilders/beaverbuilder/cff.inc.php ADDED
@@ -0,0 +1,44 @@
1
+ <?php
2
+ require_once CP_CALCULATEDFIELDSF_BASE_PATH.'/pagebuilders/beaverbuilder/cff/beaver.pb.php';
3
+
4
+ // Get the forms list
5
+ global $wpdb;
6
+ $options = array();
7
+ $default = '';
8
+
9
+ $rows = $wpdb->get_results( "SELECT id, form_name FROM ".$wpdb->prefix.CP_CALCULATEDFIELDSF_FORMS_TABLE );
10
+ foreach ($rows as $item)
11
+ {
12
+ $options[$item->id] = $item->form_name;
13
+ if(empty($default)) $default = $item->id;
14
+ }
15
+
16
+ FLBuilder::register_module(
17
+ 'CFFBeaver',
18
+ array(
19
+ 'cff-form-tab' => array(
20
+ 'title' => __('Select the form and enter the additional attributes', 'calculated-fields-form'),
21
+ 'sections' => array(
22
+ 'cff-form-section' => array(
23
+ 'title' => __('Form information', 'calculated-fields-form'),
24
+ 'fields' => array(
25
+ 'form_id' => array(
26
+ 'type' => 'select',
27
+ 'label' => __('Select form', 'calculated-fields-form'),
28
+ 'options' => $options,
29
+ 'default' => $default
30
+ ),
31
+ 'class_name' => array(
32
+ 'type' => 'text',
33
+ 'label' => __('Class name', 'calculated-fields-form')
34
+ ),
35
+ 'attributes' => array(
36
+ 'type' => 'text',
37
+ 'label' => __('Additional attributes', 'calculated-fields-form')
38
+ ),
39
+ )
40
+ )
41
+ )
42
+ )
43
+ )
44
+ );
pagebuilders/beaverbuilder/cff/beaver.pb.php ADDED
@@ -0,0 +1,18 @@
1
+ <?php
2
+ class CFFBeaver extends FLBuilderModule {
3
+ public function __construct()
4
+ {
5
+ $modules_dir = dirname(__FILE__).'/';
6
+ $modules_url = plugins_url( '/', __FILE__ ).'/';
7
+
8
+ parent::__construct(array(
9
+ 'name' => __( 'Calculated Fields Form', 'calculated-fields-form' ),
10
+ 'description' => __( 'Inserts a form', 'fl-builder' ),
11
+ 'group' => __( 'Calculated Fields Form', 'calculated-fields-form' ),
12
+ 'category' => __( 'Calculated Fields Form', 'calculated-fields-form' ),
13
+ 'dir' => $modules_dir,
14
+ 'url' => $modules_url,
15
+ 'partial_refresh' => true,
16
+ ));
17
+ }
18
+ }
pagebuilders/beaverbuilder/cff/includes/frontend.php ADDED
@@ -0,0 +1,15 @@
1
+ <?php
2
+ $form = $settings->form_id;
3
+ if(!empty($form))
4
+ {
5
+ $output = '[CP_CALCULATED_FIELDS id="'.$form.'"';
6
+
7
+ $class_name = $settings->class_name;
8
+ if(!empty($class_name)) $output .= ' class="'.esc_attr($class_name).'"';
9
+
10
+ $attributes = $settings->attributes;
11
+ if(!empty($attributes)) $output .= ' '.$attributes;
12
+
13
+ $output .= ']';
14
+ echo $output;
15
+ }
templates/01/style.css CHANGED
@@ -39,8 +39,6 @@
39
.cp_cff_letter #fbuilder .pbPrevious,
40
.cp_cff_letter #fbuilder .pbNext{color:#fff;font-size:13px;font-weight:bold;text-shadow:0px 1px 0px #000;background:#3b679e; /* Old browsers */background:-moz-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%); /* FF3.6+ */background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#3b679e), color-stop(50%,#2b88d9), color-stop(51%,#207cca), color-stop(100%,#7db9e8)); /* Chrome,Safari4+ */background:-webkit-linear-gradient(top, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* Chrome10+,Safari5.1+ */background:-o-linear-gradient(top, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* Opera 11.10+ */background:-ms-linear-gradient(top, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* IE10+ */background:linear-gradient(to bottom, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* W3C */filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b679e', endColorstr='#7db9e8',GradientType=0 ); /* IE6-9 */-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding: 5px 20px;border:0;}
41
42
- .cp_cff_letter #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
43
-
44
.cp_cff_letter #fbuilder .slider{ border: 1px solid #bbb;}
45
.cp_cff_letter #fbuilder .ui-slider-range{background: rgba(125, 185, 232, .4);}
46
.cp_cff_letter #fbuilder .ui-slider-handle{
39
.cp_cff_letter #fbuilder .pbPrevious,
40
.cp_cff_letter #fbuilder .pbNext{color:#fff;font-size:13px;font-weight:bold;text-shadow:0px 1px 0px #000;background:#3b679e; /* Old browsers */background:-moz-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%); /* FF3.6+ */background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#3b679e), color-stop(50%,#2b88d9), color-stop(51%,#207cca), color-stop(100%,#7db9e8)); /* Chrome,Safari4+ */background:-webkit-linear-gradient(top, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* Chrome10+,Safari5.1+ */background:-o-linear-gradient(top, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* Opera 11.10+ */background:-ms-linear-gradient(top, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* IE10+ */background:linear-gradient(to bottom, #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); /* W3C */filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b679e', endColorstr='#7db9e8',GradientType=0 ); /* IE6-9 */-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding: 5px 20px;border:0;}
41
42
.cp_cff_letter #fbuilder .slider{ border: 1px solid #bbb;}
43
.cp_cff_letter #fbuilder .ui-slider-range{background: rgba(125, 185, 232, .4);}
44
.cp_cff_letter #fbuilder .ui-slider-handle{
templates/02/style.css CHANGED
@@ -14,8 +14,9 @@ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#5e513e', end
14
.cp_cff_professional #fbuilder .dfield label,
15
.cp_cff_professional #fbuilder .uh{color:#c9c2b7;}
16
17
- .cp_cff_professional #fbuilder .slider,
18
19
.cp_cff_professional #fbuilder input[type="password"],
20
.cp_cff_professional #fbuilder input[type="date"],
21
.cp_cff_professional #fbuilder input[type="datetime"],
@@ -77,7 +78,6 @@ background: linear-gradient(to bottom, #bfd255 0%,#8eb92a 50%,#72aa00 51%,#9ecb
77
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bfd255', endColorstr='#9ecb2d',GradientType=0 );
78
-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding: 5px 20px;border:0;}
79
.cp_cff_professional #fbuilder .slider{ padding:0;}
80
- .cp_cff_professional #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
81
82
.cp_cff_professional #fbuilder .ui-slider-range{background:rgba(173, 201, 69, .7);}
83
.cp_cff_professional #fbuilder .ui-slider-handle{
14
.cp_cff_professional #fbuilder .dfield label,
15
.cp_cff_professional #fbuilder .uh{color:#c9c2b7;}
16
17
+ .cp_cff_professional #fbuilder .top_aligned .fields>.dfield{margin-top:5px;}
18
19
+ .cp_cff_professional #fbuilder .slider,
20
.cp_cff_professional #fbuilder input[type="password"],
21
.cp_cff_professional #fbuilder input[type="date"],
22
.cp_cff_professional #fbuilder input[type="datetime"],
78
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bfd255', endColorstr='#9ecb2d',GradientType=0 );
79
-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding: 5px 20px;border:0;}
80
.cp_cff_professional #fbuilder .slider{ padding:0;}
81
82
.cp_cff_professional #fbuilder .ui-slider-range{background:rgba(173, 201, 69, .7);}
83
.cp_cff_professional #fbuilder .ui-slider-handle{
templates/03/style.css CHANGED
@@ -42,8 +42,6 @@
42
.cp_cff_natural #fbuilder .pbPrevious,
43
.cp_cff_natural #fbuilder .pbNext{color:#fff;font-variant:small-caps;font-size:14px;font-weight:bold;background:url("top_bg.png");-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;padding: 5px 20px;border:0;}
44
45
- .cp_cff_natural #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
46
-
47
.cp_cff_natural #fbuilder .slider{ border: 1px solid rgb(150, 150, 150);}
48
.cp_cff_natural #fbuilder .ui-slider-range{background: rgba(153, 200, 115,.5);}
49
.cp_cff_natural #fbuilder .ui-slider-handle{
42
.cp_cff_natural #fbuilder .pbPrevious,
43
.cp_cff_natural #fbuilder .pbNext{color:#fff;font-variant:small-caps;font-size:14px;font-weight:bold;background:url("top_bg.png");-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;padding: 5px 20px;border:0;}
44
45
.cp_cff_natural #fbuilder .slider{ border: 1px solid rgb(150, 150, 150);}
46
.cp_cff_natural #fbuilder .ui-slider-range{background: rgba(153, 200, 115,.5);}
47
.cp_cff_natural #fbuilder .ui-slider-handle{
templates/04/style.css CHANGED
@@ -32,10 +32,8 @@
32
.cp_cff_elegant #fbuilder .pbNext{border:0; color:#fff;font-variant:small-caps;font-size:14px;font-weight:bold;background:rgb(115, 185, 214);-webkit-border-top-right-radius: 10px;-webkit-border-bottom-left-radius: 10px;-moz-border-radius-topright: 10px;-moz-border-radius-bottomleft: 10px;border-top-right-radius: 10px;border-bottom-left-radius: 10px;padding:5px 20px;}
33
.cp_cff_elegant #fbuilder .r{color:rgb(115, 185, 214);}
34
35
- .cp_cff_elegant #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
36
-
37
- .cp_cff_elegant #fbuilder .ui-slider-range{border-radius:0;background: rgb(115, 185, 214) !important; }
38
- .cp_cff_elegant #fbuilder .slider{background: #DCDCDC !important; border-radius: 0;border:0;height: .3em;}
39
.cp_cff_elegant #fbuilder .ui-slider-handle{
40
height: .8em;
41
border-radius: 0;
32
.cp_cff_elegant #fbuilder .pbNext{border:0; color:#fff;font-variant:small-caps;font-size:14px;font-weight:bold;background:rgb(115, 185, 214);-webkit-border-top-right-radius: 10px;-webkit-border-bottom-left-radius: 10px;-moz-border-radius-topright: 10px;-moz-border-radius-bottomleft: 10px;border-top-right-radius: 10px;border-bottom-left-radius: 10px;padding:5px 20px;}
33
.cp_cff_elegant #fbuilder .r{color:rgb(115, 185, 214);}
34
35
+ .cp_cff_elegant #fbuilder .ui-slider-range{border-radius:0;background: rgb(115, 185, 214); }
36
+ .cp_cff_elegant #fbuilder .slider{background: #DCDCDC; border-radius: 0;border:0;height: .3em;}
37
.cp_cff_elegant #fbuilder .ui-slider-handle{
38
height: .8em;
39
border-radius: 0;
templates/05/style.css CHANGED
@@ -23,6 +23,11 @@
23
.cp_cff_decorative #fbuilder .fields:not(.section_breaks) label{font: bold 11px 'century gothic', Arial, Helvetica, sans-serif;text-transform: uppercase;color: rgb(229, 27, 36);}
24
.cp_cff_decorative #fbuilder .fields .dfield label{color: rgb(0, 34, 65);}
25
26
.cp_cff_decorative #fbuilder legend{font-weight:normal;text-align:center;border:0;}
27
28
.cp_cff_decorative #fbuilder fieldset{border:0;padding:0;}
@@ -35,9 +40,8 @@
35
.cp_cff_decorative #fbuilder .r:before{content:" (";}
36
.cp_cff_decorative #fbuilder .r:after{content:")";}
37
38
- .cp_cff_decorative #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
39
-
40
- .cp_cff_decorative #fbuilder .slider{background: rgb(223, 221, 193) !important; border-radius: 0;border:0;height: .3em;}
41
.cp_cff_decorative #fbuilder .ui-slider-handle{
42
height: .8em;
43
border-radius: 0;
23
.cp_cff_decorative #fbuilder .fields:not(.section_breaks) label{font: bold 11px 'century gothic', Arial, Helvetica, sans-serif;text-transform: uppercase;color: rgb(229, 27, 36);}
24
.cp_cff_decorative #fbuilder .fields .dfield label{color: rgb(0, 34, 65);}
25
26
+ @media print, screen and (min-width: 24em) {
27
+ .cp_cff_decorative #fbuilder .left_aligned .fields:not(.cff-slider-field):not(.cff-radio-field):not(.cff-checkbox-field)>label:not(:empty),
28
+ .cp_cff_decorative #fbuilder .right_aligned .fields:not(.cff-slider-field):not(.cff-radio-field):not(.cff-checkbox-field)>label:not(:empty){padding-top:5px;padding-bottom:5px;}
29
+ }
30
+
31
.cp_cff_decorative #fbuilder legend{font-weight:normal;text-align:center;border:0;}
32
33
.cp_cff_decorative #fbuilder fieldset{border:0;padding:0;}
40
.cp_cff_decorative #fbuilder .r:before{content:" (";}
41
.cp_cff_decorative #fbuilder .r:after{content:")";}
42
43
+ .cp_cff_decorative #fbuilder .slider{background: rgb(223, 221, 193); border-radius: 0;border:0;height: .3em;}
44
+ .cp_cff_decorative #fbuilder .ui-slider-range{background: #cc3333;}
45
.cp_cff_decorative #fbuilder .ui-slider-handle{
46
height: .8em;
47
border-radius: 0;
templates/06/style.css CHANGED
@@ -73,9 +73,7 @@ padding:5px;
73
.cp_cff_clean #fbuilder input[type=reset],
74
.cp_cff_clean #fbuilder .pbSubmit,
75
.cp_cff_clean #fbuilder .pbPrevious,
76
- .cp_cff_clean #fbuilder .pbNext{color:#fff;font-size:14px;background: #0093DA;-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;margin:0 10px 0 0; text-shadow:none !important;border:0;padding: 5px 20px;}
77
.cp_cff_clean #fbuilder .r{color:rgb(255,0,0);}
78
79
- .cp_cff_clean #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
80
-
81
.cp_cff_clean #fbuilder .discount-container{margin-top:10px;font-weight:bold;}
73
.cp_cff_clean #fbuilder input[type=reset],
74
.cp_cff_clean #fbuilder .pbSubmit,
75
.cp_cff_clean #fbuilder .pbPrevious,
76
+ .cp_cff_clean #fbuilder .pbNext{color:#fff;font-size:14px;background: #0093DA;-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;margin:0 10px 0 0; text-shadow:none;border:0;padding: 5px 20px;}
77
.cp_cff_clean #fbuilder .r{color:rgb(255,0,0);}
78
79
.cp_cff_clean #fbuilder .discount-container{margin-top:10px;font-weight:bold;}
templates/07/style.css CHANGED
@@ -50,7 +50,6 @@
50
height: 45px;
51
}
52
.cp_cff_minimalist #fbuilder textarea{height:auto;}
53
- .cp_cff_minimalist #fbuilder .fields>label{font-size: 1.3em; }
54
.cp_cff_minimalist #fbuilder .pbSubmit,
55
.cp_cff_minimalist #fbuilder .pbreak .pbPrevious,
56
.cp_cff_minimalist #fbuilder .pbreak .pbNext,
@@ -91,12 +90,17 @@
91
.cp_cff_minimalist #fbuilder .fields.section_breaks{border-left: 3px solid #27A0A0;padding-left:10px;margin-top:20px; margin-bottom:20px;}
92
.cp_cff_minimalist #fbuilder .fields.section_breaks label{font-weight: bold;}
93
94
.cp_cff_minimalist #fbuilder .r{color:#27A0A0;}
95
96
.cp_cff_minimalist #fbuilder .wizard-progressbar{width: 100%;height: 5px;background-color: #ddd;}
97
.cp_cff_minimalist #fbuilder .wizard-progressbar-value{display: block;background-color: #27A0A0; height: 5px;}
98
- .cp_cff_minimalist #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important;padding-top:5px;}
99
- .cp_cff_minimalist #fbuilder .slider{background: #ddd !important; border-radius: 0;border:0;height: .3em;}
100
.cp_cff_minimalist #fbuilder .ui-slider-handle{
101
height: .8em;
102
border-radius: 0;
50
height: 45px;
51
}
52
.cp_cff_minimalist #fbuilder textarea{height:auto;}
53
.cp_cff_minimalist #fbuilder .pbSubmit,
54
.cp_cff_minimalist #fbuilder .pbreak .pbPrevious,
55
.cp_cff_minimalist #fbuilder .pbreak .pbNext,
90
.cp_cff_minimalist #fbuilder .fields.section_breaks{border-left: 3px solid #27A0A0;padding-left:10px;margin-top:20px; margin-bottom:20px;}
91
.cp_cff_minimalist #fbuilder .fields.section_breaks label{font-weight: bold;}
92
93
+ @media print, screen and (min-width: 24em) {
94
+ .cp_cff_minimalist #fbuilder .right_aligned .dfield.slider-container,
95
+ .cp_cff_minimalist #fbuilder .left_aligned .dfield.slider-container{padding-top:10px};
96
+ }
97
+
98
.cp_cff_minimalist #fbuilder .r{color:#27A0A0;}
99
100
.cp_cff_minimalist #fbuilder .wizard-progressbar{width: 100%;height: 5px;background-color: #ddd;}
101
.cp_cff_minimalist #fbuilder .wizard-progressbar-value{display: block;background-color: #27A0A0; height: 5px;}
102
+ .cp_cff_minimalist #fbuilder .ui-slider-range{background:#2CBBBB;}
103
+ .cp_cff_minimalist #fbuilder .slider{background: #ddd; border-radius: 0;border:0;height: .3em;}
104
.cp_cff_minimalist #fbuilder .ui-slider-handle{
105
height: .8em;
106
border-radius: 0;
templates/08/style.css CHANGED
@@ -165,14 +165,14 @@ background: #394D61;
165
padding-left: 10px;
166
padding-right: 10px;
167
border-radius: 5px;
168
- color: #A8BACE !important;
169
}
170
.cp_cff_dark_notebook #fbuilder .fields.section_breaks{
171
margin-top:20px;
172
margin-bottom:20px;
173
}
174
.cp_cff_dark_notebook #fbuilder .fields.section_breaks label{
175
- color: #A8BACE !important;
176
}
177
.cp_cff_dark_notebook #fbuilder fieldset,
178
.cp_cff_dark_notebook #fbuilder fieldset legend{
@@ -183,8 +183,7 @@ background: #394D61;
183
}
184
185
.cp_cff_dark_notebook #fbuilder .fields.section_breaks .section_break{border:0;}
186
- .cp_cff_dark_notebook #fbuilder .dfield.slider-container{padding-left: 10px !important; padding-right: 10px !important; padding-top:5px;}
187
- .cp_cff_dark_notebook #fbuilder .slider{background: #53687E !important; border-radius: 0;border:0;height: .3em;}
188
.cp_cff_dark_notebook #fbuilder .ui-slider-range{background: #394D61;}
189
.cp_cff_dark_notebook #fbuilder .ui-slider-handle{
190
height: .8em;
165
padding-left: 10px;
166
padding-right: 10px;
167
border-radius: 5px;
168
+ color: #A8BACE;
169
}
170
.cp_cff_dark_notebook #fbuilder .fields.section_breaks{
171
margin-top:20px;
172
margin-bottom:20px;
173
}
174
.cp_cff_dark_notebook #fbuilder .fields.section_breaks label{
175
+ color: #A8BACE;
176
}
177
.cp_cff_dark_notebook #fbuilder fieldset,
178
.cp_cff_dark_notebook #fbuilder fieldset legend{
183
}
184
185
.cp_cff_dark_notebook #fbuilder .fields.section_breaks .section_break{border:0;}
186
+ .cp_cff_dark_notebook #fbuilder .slider{background: #53687E; border-radius: 0;border:0;height: .3em;}
187
.cp_cff_dark_notebook #fbuilder .ui-slider-range{background: #394D61;}
188
.cp_cff_dark_notebook #fbuilder .ui-slider-handle{
189
height: .8em;
templates/09/style.css CHANGED
@@ -121,4 +121,4 @@
121
.cp_cff_box #fbuilder .apply-coupon{background: url('data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMjQ3MUZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw