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+$/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(/"+$/, '');
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+$/i.test(v)) ? '[id*="'+v+me.form_identifier+'"]' : v,
387
+ i = (one) ? 'one' : 'on';
388
+ if('string' == typeof s && !/^\s*$/.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*$/.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*$/.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*$/.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this.min, this.thousandSeparator, this.centSeparator )+'" ' : '' )+( ( !/^\s*$/.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*$/.test(this.min)) this._setHndl('min');
77
+ if(!/^\s*$/.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*$/.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this._getAttr('min'), this.thousandSeparator, this.centSeparator )+'" ' : '' )+( ( !/^\s*$/.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*$/.test( this.thousandSeparator ) && /^\s*\.\s*$/.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*$/.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this.min, this.thousandSeparator, this.decimalSymbol )+'" ' : '' )+( ( !/^\s*$/.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*$/.test(this.min)) this._setHndl('min');
68
+ if(!/^\s*$/.test(this.max)) this._setHndl('max');
69
+ },
70
  show:function()
71
  {
72
  var _type = ( this.dformat == 'digits' || ( /^\s*$/.test( this.thousandSeparator ) && /^\s*\.\s*$/.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*$/.test( this.min) ) ? 'min="'+$.fbuilder.parseVal( this._getAttr('min'), this.thousandSeparator, this.decimalSymbol )+'" ' : '' )+( ( !/^\s*$/.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+$/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+$/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*$/.test(this.min)) ? 0 : $.trim(this.min);
102
  this.max = (/^\s*$/.test(this.max)) ? 100 : $.trim(this.max);
103
  this.step = (/^\s*$/.test(this.step)) ? 1 : $.trim(this.step);
104
- this.predefined = (/^\s*$/.test(this.predefined)) ? this.min : $.trim(this.predefined);
105
- this.predefinedMin = (/^\s*$/.test(this.predefinedMin))? this.min : $.trim(this.predefinedMin);
106
- this.predefinedMax = (/^\s*$/.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*$/.test(this.min)) ? 0 : $.trim(this.min);
84
  this.max = (/^\s*$/.test(this.max)) ? 100 : $.trim(this.max);
85
  this.step = (/^\s*$/.test(this.step)) ? 1 : $.trim(this.step);
86
+ this.predefined = (/^\s*$/.test(this.predefined)) ? this.min : _toNumber(this.predefined);
87
+ this.predefinedMin = (/^\s*$/.test(this.predefinedMin))? this.min : _toNumber(this.predefinedMin);
88
+ this.predefinedMax = (/^\s*$/.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+$/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(/"+$/, '');
50
- }
51
- return v;
52
- },
53
- _setHndl:function(attr, one)
54
- {
55
- var me = this, v = $.trim(me[attr]);
56
- if(/^fieldname\d+$/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*$/.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*$/.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,PHN2ZyBmaWxsPSIjMjQ3MUZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTkgMTRsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=');}
122
 
123
  .cp_cff_box #fbuilder .discount-container{margin-top:10px;}
124
- .cp_cff_box .kbw-signature ~ div{margin: 15px 0 0 5px !important;}
121
  .cp_cff_box #fbuilder .apply-coupon{background: url('data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMjQ3MUZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTkgMTRsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=');}
122
 
123
  .cp_cff_box #fbuilder .discount-container{margin-top:10px;}
124
+ .cp_cff_box .kbw-signature ~ div{margin: 15px 0 0 5px;}
templates/10/style.css CHANGED
@@ -90,8 +90,8 @@
90
  }
91
  .cp_cff_pastel #fbuilder .r{color:#1abc9c;}
92
  .cp_cff_pastel #fbuilder .ui-slider-handle{background:#1abc9c;border:0;border-radius:15px;height: .8em;width: .8em;}
93
- .cp_cff_pastel #fbuilder .dfield.slider-container{padding-left: 10px !important; border-radius: 10px; padding-right: 10px !important; padding-top:5px;}
94
- .cp_cff_pastel #fbuilder .slider{background: #e8eeef !important; border-radius: 10px;border:0;height: .3em;}
95
  .cp_cff_pastel #fbuilder .ui-slider-range{background: #d2d9dd;}
96
  .cp_cff_pastel #fbuilder .fields.section_breaks{
97
  border:0;
90
  }
91
  .cp_cff_pastel #fbuilder .r{color:#1abc9c;}
92
  .cp_cff_pastel #fbuilder .ui-slider-handle{background:#1abc9c;border:0;border-radius:15px;height: .8em;width: .8em;}
93
+ .cp_cff_pastel #fbuilder .dfield.slider-container{border-radius: 10px;}
94
+ .cp_cff_pastel #fbuilder .slider{background: #e8eeef; border-radius: 10px;border:0;height: .3em;}
95
  .cp_cff_pastel #fbuilder .ui-slider-range{background: #d2d9dd;}
96
  .cp_cff_pastel #fbuilder .fields.section_breaks{
97
  border:0;
templates/11/js.js CHANGED
@@ -2,19 +2,19 @@ fbuilderjQuery(function(){
2
  var $ = fbuilderjQuery;
3
  $(document)
4
  .on(
5
- 'mouseover',
6
- '.cp_cff_11 input,.cp_cff_11 textarea,.cp_cff_11 select,.cp_cff_11 .slider-container',
7
  function()
8
  {
9
- $(this).closest( '.fields' ).addClass('highlight');
10
  }
11
  )
12
  .on(
13
- 'mouseout',
14
- '.cp_cff_11 input,.cp_cff_11 textarea,.cp_cff_11 select,.cp_cff_11 .slider-container',
15
  function()
16
  {
17
- $(this).closest( '.fields' ).removeClass('highlight');
18
  }
19
  );
20
  });
2
  var $ = fbuilderjQuery;
3
  $(document)
4
  .on(
5
+ 'mouseover',
6
+ '.cp_cff_11 input,.cp_cff_11 textarea,.cp_cff_11 select,.cp_cff_11 .slider-container',
7
  function()
8
  {
9
+ $(this).closest( '.fields' ).addClass('cff-highlight');
10
  }
11
  )
12
  .on(
13
+ 'mouseout',
14
+ '.cp_cff_11 input,.cp_cff_11 textarea,.cp_cff_11 select,.cp_cff_11 .slider-container',
15
  function()
16
  {
17
+ $(this).closest( '.fields' ).removeClass('cff-highlight');
18
  }
19
  );
20
  });
templates/11/style.css CHANGED
@@ -15,7 +15,7 @@
15
 
16
  .cp_cff_11 #fbuilder .fields:not(.cff-container-field){padding: 10px;}
17
 
18
- .cp_cff_11 #fbuilder .fields.highlight{background: #FFF9DF !important;}
19
 
20
  .cp_cff_11 #fbuilder input[type="text"],
21
  .cp_cff_11 #fbuilder input[type="file"],
@@ -96,8 +96,8 @@
96
 
97
  .cp_cff_11 #fbuilder .r{color:#FF0000;}
98
  .cp_cff_11 #fbuilder .ui-slider-handle{background:#1485e5;border:0;border-radius:15px;height: .8em;width: .8em;}
99
- .cp_cff_11 #fbuilder .dfield.slider-container{padding-left: 10px !important; border-radius: 10px; padding-right: 10px !important; padding-top:5px;}
100
- .cp_cff_11 #fbuilder .slider{background: #ececec !important; border-radius: 10px;border:0;height: .3em;}
101
  .cp_cff_11 #fbuilder .ui-slider-range{background: #1795FF;}
102
 
103
  .cp_cff_11 #fbuilder span.uh{
@@ -113,16 +113,20 @@
113
  }
114
 
115
  .cp_cff_11 #fbuilder fieldset legend{
116
- padding: 5px 10px;
117
  font-weight:bold;
118
  text-transform:uppercase;
119
- border: 0 !important;
120
- border-left: 3px solid #1795FF !important;
121
- margin-left:-11px !important;
122
  }
123
 
124
- .cp_cff_11 #fbuilder .fields.section_breaks{ border-left: 3px solid #1795FF !important;margin-top:10px !important; margin-bottom:10px !important;}
125
  .cp_cff_11 #fbuilder .fields.section_breaks>label{font-size:1.3em;font-weight:900;text-transform:uppercase;}
126
  .cp_cff_11 #fbuilder .fields.section_breaks .section_break{border:0;}
127
 
128
- .cp_cff_11 #fbuilder .discount-container{margin-top:10px;font-weight:bold;}
 
 
 
 
 
15
 
16
  .cp_cff_11 #fbuilder .fields:not(.cff-container-field){padding: 10px;}
17
 
18
+ .cp_cff_11 #fbuilder .fields.cff-highlight{background: #FFF9DF;}
19
 
20
  .cp_cff_11 #fbuilder input[type="text"],
21
  .cp_cff_11 #fbuilder input[type="file"],
96
 
97
  .cp_cff_11 #fbuilder .r{color:#FF0000;}
98
  .cp_cff_11 #fbuilder .ui-slider-handle{background:#1485e5;border:0;border-radius:15px;height: .8em;width: .8em;}
99
+ .cp_cff_11 #fbuilder .dfield.slider-container{border-radius: 10px;}
100
+ .cp_cff_11 #fbuilder .slider{background: #ececec; border-radius: 10px;border:0;height: .3em;}
101
  .cp_cff_11 #fbuilder .ui-slider-range{background: #1795FF;}
102
 
103
  .cp_cff_11 #fbuilder span.uh{
113
  }
114
 
115
  .cp_cff_11 #fbuilder fieldset legend{
 
116
  font-weight:bold;
117
  text-transform:uppercase;
118
+ border: 0;
119
+ border-left: 3px solid #1795FF;
120
+ margin-left:-11px;
121
  }
122
 
123
+ .cp_cff_11 #fbuilder .fields.section_breaks{ border-left: 3px solid #1795FF;margin-top:10px; margin-bottom:10px;}
124
  .cp_cff_11 #fbuilder .fields.section_breaks>label{font-size:1.3em;font-weight:900;text-transform:uppercase;}
125
  .cp_cff_11 #fbuilder .fields.section_breaks .section_break{border:0;}
126
 
127
+ .cp_cff_11 #fbuilder .discount-container{margin-top:10px;font-weight:bold;}
128
+
129
+ @media print, screen and (min-width: 24em) {
130
+ .cp_cff_11 #fbuilder .right_aligned .dfield.slider-container,
131
+ .cp_cff_11 #fbuilder .left_aligned .dfield.slider-container{padding-top:10px;}
132
+ }
templates/12/style.css CHANGED
@@ -17,8 +17,6 @@
17
 
18
  .cp_cff_12 #fbuilder .fields:not(.cff-container-field){padding: 10px;}
19
 
20
- .cp_cff_12 #fbuilder .fields.highlight{background: #FFF9DF !important;}
21
-
22
  .cp_cff_12 #fbuilder input[type="text"],
23
  .cp_cff_12 #fbuilder input[type="file"],
24
  .cp_cff_12 #fbuilder input[type="password"],
@@ -94,9 +92,9 @@
94
  .cp_cff_12 #fbuilder .pb0 .pbPrevious{display:none;}
95
 
96
  .cp_cff_12 #fbuilder .r{color:#FF0000;}
97
- .cp_cff_12 #fbuilder .ui-slider-handle{background:#1485e5;border:0;border-radius:15px;height: 1.5em;width: 1.5em;top:-0.6em;}
98
- .cp_cff_12 #fbuilder .dfield.slider-container{padding-left: 10px !important; border-radius: 10px; padding-right: 10px !important; padding-top:5px;}
99
- .cp_cff_12 #fbuilder .slider{background: #ececec !important; border-radius: 10px;border:0;height: .3em;}
100
  .cp_cff_12 #fbuilder .ui-slider-range{background: #1795FF;}
101
  .cp_cff_12 #fbuilder .corner_captions,
102
  .cp_cff_12 #fbuilder .corner-captions{margin-top:10px;}
@@ -113,13 +111,13 @@
113
 
114
  .cp_cff_12 #fbuilder fieldset legend{
115
  padding: 5px 10px;
116
- border:1px solid #dcdcdc !important;
117
  font-weight:bold;
118
  text-transform:uppercase;
119
  border-radius: 5px;
120
  }
121
 
122
- .cp_cff_12 #fbuilder .fields.section_breaks{ margin-top:10px !important; margin-bottom:10px !important;}
123
  .cp_cff_12 #fbuilder .fields.section_breaks>label{font-size:1.3em;font-weight:900;text-transform:uppercase;border-bottom:1px solid #dcdcdc}
124
  .cp_cff_12 #fbuilder .fields.section_breaks .section_break{border:0;}
125
 
17
 
18
  .cp_cff_12 #fbuilder .fields:not(.cff-container-field){padding: 10px;}
19
 
 
 
20
  .cp_cff_12 #fbuilder input[type="text"],
21
  .cp_cff_12 #fbuilder input[type="file"],
22
  .cp_cff_12 #fbuilder input[type="password"],
92
  .cp_cff_12 #fbuilder .pb0 .pbPrevious{display:none;}
93
 
94
  .cp_cff_12 #fbuilder .r{color:#FF0000;}
95
+ .cp_cff_12 #fbuilder .ui-slider-handle{background:#1485e5;border:0;border-radius:15px;height: 20px;width: 20px;top:-7px;}
96
+ .cp_cff_12 #fbuilder .dfield.slider-container{border-radius: 10px; padding-top:12px;}
97
+ .cp_cff_12 #fbuilder .slider{background: #ececec; border-radius: 10px;border:0;height: .3em;}
98
  .cp_cff_12 #fbuilder .ui-slider-range{background: #1795FF;}
99
  .cp_cff_12 #fbuilder .corner_captions,
100
  .cp_cff_12 #fbuilder .corner-captions{margin-top:10px;}
111
 
112
  .cp_cff_12 #fbuilder fieldset legend{
113
  padding: 5px 10px;
114
+ border:1px solid #dcdcdc;
115
  font-weight:bold;
116
  text-transform:uppercase;
117
  border-radius: 5px;
118
  }
119
 
120
+ .cp_cff_12 #fbuilder .fields.section_breaks{ margin-top:10px; margin-bottom:10px;}
121
  .cp_cff_12 #fbuilder .fields.section_breaks>label{font-size:1.3em;font-weight:900;text-transform:uppercase;border-bottom:1px solid #dcdcdc}
122
  .cp_cff_12 #fbuilder .fields.section_breaks .section_break{border:0;}
123
 
templates/12/unite.css CHANGED
@@ -1,4 +1,4 @@
1
- @charset "UTF-8" !important;
2
  /*!
3
  *
4
  * bttn.css - https://ganapativs.github.io/bttn.css
@@ -11,268 +11,74 @@
11
  *
12
  */
13
  /* standalone - .bttn-unite */
14
- .bttn-default {
15
- color: #fff !important;
16
- }
17
- .bttn-primary,
18
- .bttn,
19
- .bttn-lg,
20
- .bttn-md,
21
- .bttn-sm,
22
- .bttn-xs {
23
- color: #1d89ff !important;
24
- }
25
- .bttn-warning {
26
- color: #feab3a !important;
27
- }
28
- .bttn-danger {
29
- color: #ff5964 !important;
30
- }
31
- .bttn-success {
32
- color: #28b78d !important;
33
- }
34
- .bttn-royal {
35
- color: #bd2df5 !important;
36
- }
37
- .bttn,
38
- .bttn-lg,
39
- .bttn-md,
40
- .bttn-sm,
41
- .bttn-xs {
42
- margin: 0 !important;
43
- padding: 0 !important;
44
- border-width: 0 !important;
45
- border-color: transparent !important;
46
- background: transparent !important;
47
- font-weight: 400 !important;
48
- cursor: pointer !important;
49
- position: relative !important;
50
- }
51
- .bttn-lg {
52
- padding: 8px 15px !important;
53
- font-size: 24px !important;
54
- font-family: inherit !important;
55
- }
56
- .bttn-md {
57
- font-size: 20px !important;
58
- font-family: inherit !important;
59
- padding: 5px 12px !important;
60
- }
61
- .bttn-sm {
62
- padding: 4px 10px !important;
63
- font-size: 16px !important;
64
- font-family: inherit !important;
65
- }
66
- .bttn-xs {
67
- padding: 3px 8px !important;
68
- font-size: 12px !important;
69
- font-family: inherit !important;
70
- }
71
- .bttn-unite {
72
- margin: 0 !important;
73
- padding: 0 !important;
74
- border-width: 0 !important;
75
- border-color: transparent !important;
76
- background: transparent !important;
77
- font-weight: 400 !important;
78
- cursor: pointer !important;
79
- position: relative !important;
80
- font-size: 20px !important;
81
- font-family: inherit !important;
82
- padding: 5px 12px !important;
83
- z-index: 0 !important;
84
- overflow: hidden !important;
85
- border: 1px solid #1d89ff !important;
86
- border-radius: 100px !important;
87
- background: #fff !important;
88
- color: #1d89ff !important;
89
- -webkit-transition: color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1), border-color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
90
- transition: color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1), border-color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
91
- }
92
- .bttn-unite:before {
93
- position: absolute !important;
94
- top: 0 !important;
95
- left: 0 !important;
96
- width: 100% !important;
97
- height: 120% !important;
98
- background: #d6e3ff !important;
99
- content: '' !important;
100
- opacity: 0 !important;
101
- z-index: -1 !important;
102
- -webkit-transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
103
- transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
104
- transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
105
- transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
106
- -webkit-transform: translate3d(-110%, -10%, 0) skewX(-20deg) !important;
107
- transform: translate3d(-110%, -10%, 0) skewX(-20deg) !important;
108
- }
109
- .bttn-unite:after {
110
- position: absolute !important;
111
- top: 0 !important;
112
- left: 0 !important;
113
- width: 100% !important;
114
- height: 120% !important;
115
- background: rgba(214,227,255,0.7) !important;
116
- content: '' !important;
117
- opacity: 0 !important;
118
- z-index: -1 !important;
119
- -webkit-transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
120
- transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
121
- transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
122
- transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
123
- -webkit-transform: translate3d(110%, -10%, 0) skewX(-20deg) !important;
124
- transform: translate3d(110%, -10%, 0) skewX(-20deg) !important;
125
- }
126
- .bttn-unite:hover,
127
- .bttn-unite:focus {
128
- box-shadow: 0 1px 8px rgba(58,51,53,0.3) !important;
129
- color: #1d89ff !important;
130
- -webkit-transition: all 0.5s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
131
- transition: all 0.5s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
132
- }
133
- .bttn-unite:hover:before,
134
- .bttn-unite:focus:before {
135
- opacity: 1 !important;
136
- -webkit-transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
137
- transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
138
- transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
139
- transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
140
- -webkit-transform: translate3d(-50%, -10%, 0) skewX(-20deg) !important;
141
- transform: translate3d(-50%, -10%, 0) skewX(-20deg) !important;
142
- }
143
- .bttn-unite:hover:after,
144
- .bttn-unite:focus:after {
145
- opacity: 1 !important;
146
- -webkit-transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
147
- transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
148
- transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
149
- transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1) !important;
150
- -webkit-transform: translate3d(50%, -10%, 0) skewX(-20deg) !important;
151
- transform: translate3d(50%, -10%, 0) skewX(-20deg) !important;
152
- }
153
- .bttn-unite.bttn-xs {
154
- padding: 3px 8px !important;
155
- font-size: 12px !important;
156
- font-family: inherit !important;
157
- }
158
- .bttn-unite.bttn-xs:hover,
159
- .bttn-unite.bttn-xs:focus {
160
- box-shadow: 0 1px 4px rgba(58,51,53,0.3) !important;
161
- }
162
- .bttn-unite.bttn-sm {
163
- padding: 4px 10px !important;
164
- font-size: 16px !important;
165
- font-family: inherit !important;
166
- }
167
- .bttn-unite.bttn-sm:hover,
168
- .bttn-unite.bttn-sm:focus {
169
- box-shadow: 0 1px 6px rgba(58,51,53,0.3) !important;
170
- }
171
- .bttn-unite.bttn-md {
172
- font-size: 20px !important;
173
- font-family: inherit !important;
174
- padding: 5px 12px !important;
175
- }
176
- .bttn-unite.bttn-md:hover,
177
- .bttn-unite.bttn-md:focus {
178
- box-shadow: 0 1px 8px rgba(58,51,53,0.3) !important;
179
- }
180
- .bttn-unite.bttn-lg {
181
- padding: 8px 15px !important;
182
- font-size: 24px !important;
183
- font-family: inherit !important;
184
- }
185
- .bttn-unite.bttn-lg:hover,
186
- .bttn-unite.bttn-lg:focus {
187
- box-shadow: 0 1px 10px rgba(58,51,53,0.3) !important;
188
- }
189
- .bttn-unite.bttn-default {
190
- border-color: #1d89ff !important;
191
- color: #1d89ff !important;
192
- }
193
- .bttn-unite.bttn-default:hover,
194
- .bttn-unite.bttn-default:focus {
195
- background: #d6e3ff !important;
196
- color: #1d89ff !important;
197
- }
198
- .bttn-unite.bttn-default:before {
199
- background: #a7c3ff !important;
200
- }
201
- .bttn-unite.bttn-default:after {
202
- background: #d6e3ff !important;
203
- }
204
- .bttn-unite.bttn-primary {
205
- border-color: #1d89ff !important;
206
- color: #1d89ff !important;
207
- }
208
- .bttn-unite.bttn-primary:hover,
209
- .bttn-unite.bttn-primary:focus {
210
- background: #1d89ff !important;
211
- color: #fff !important;
212
- }
213
- .bttn-unite.bttn-primary:before {
214
- background: #006de3 !important;
215
- }
216
- .bttn-unite.bttn-primary:after {
217
- background: #1d89ff !important;
218
- }
219
- .bttn-unite.bttn-warning {
220
- border-color: #feab3a !important;
221
- color: #feab3a !important;
222
- }
223
- .bttn-unite.bttn-warning:hover,
224
- .bttn-unite.bttn-warning:focus {
225
- background: #feab3a !important;
226
- color: #fff !important;
227
- }
228
- .bttn-unite.bttn-warning:before {
229
- background: #f89001 !important;
230
- }
231
- .bttn-unite.bttn-warning:after {
232
- background: #feab3a !important;
233
- }
234
- .bttn-unite.bttn-danger {
235
- border-color: #ff5964 !important;
236
- color: #ff5964 !important;
237
- }
238
- .bttn-unite.bttn-danger:hover,
239
- .bttn-unite.bttn-danger:focus {
240
- background: #ff5964 !important;
241
- color: #fff !important;
242
- }
243
- .bttn-unite.bttn-danger:before {
244
- background: #ff1424 !important;
245
- }
246
- .bttn-unite.bttn-danger:after {
247
- background: #ff5964 !important;
248
- }
249
- .bttn-unite.bttn-success {
250
- border-color: #28b78d !important;
251
- color: #28b78d !important;
252
- }
253
- .bttn-unite.bttn-success:hover,
254
- .bttn-unite.bttn-success:focus {
255
- background: #28b78d !important;
256
- color: #fff !important;
257
- }
258
- .bttn-unite.bttn-success:before {
259
- background: #209271 !important;
260
- }
261
- .bttn-unite.bttn-success:after {
262
- background: #28b78d !important;
263
- }
264
- .bttn-unite.bttn-royal {
265
- border-color: #bd2df5 !important;
266
- color: #bd2df5 !important;
267
- }
268
- .bttn-unite.bttn-royal:hover,
269
- .bttn-unite.bttn-royal:focus {
270
- background: #bd2df5 !important;
271
- color: #fff !important;
272
- }
273
- .bttn-unite.bttn-royal:before {
274
- background: #a20bdd !important;
275
- }
276
- .bttn-unite.bttn-royal:after {
277
- background: #bd2df5 !important;
278
- }
1
+ @charset "UTF-8";
2
  /*!
3
  *
4
  * bttn.css - https://ganapativs.github.io/bttn.css
11
  *
12
  */
13
  /* standalone - .bttn-unite */
14
+ #fbuilder .bttn-default {color: #fff;}
15
+ #fbuilder .bttn-primary,
16
+ #fbuilder .bttn,
17
+ #fbuilder .bttn-lg,
18
+ #fbuilder .bttn-md,
19
+ #fbuilder .bttn-sm,
20
+ #fbuilder .bttn-xs {color: #1d89ff;}
21
+ #fbuilder .bttn-warning {color: #feab3a;}
22
+ #fbuilder .bttn-danger {color: #ff5964;}
23
+ #fbuilder .bttn-success {color: #28b78d;}
24
+ #fbuilder .bttn-royal {color: #bd2df5;}
25
+ #fbuilder .bttn,
26
+ #fbuilder .bttn-lg,
27
+ #fbuilder .bttn-md,
28
+ #fbuilder .bttn-sm,
29
+ #fbuilder .bttn-xs {margin: 0;padding: 0;border-width: 0;border-color: transparent;background: transparent;font-weight: 400;cursor: pointer;position: relative;}
30
+ #fbuilder .bttn-lg {padding: 8px 15px;font-size: 24px;font-family: inherit;}
31
+ #fbuilder .bttn-md {font-size: 20px;font-family: inherit;padding: 5px 12px;}
32
+ #fbuilder .bttn-sm {padding: 4px 10px;font-size: 16px;font-family: inherit;}
33
+ #fbuilder .bttn-xs {padding: 3px 8px;font-size: 12px;font-family: inherit;}
34
+ #fbuilder .bttn-unite {margin: 0;padding: 0;border-width: 0;border-color: transparent;background: transparent;font-weight: 400;cursor: pointer;position: relative;font-size: 20px;font-family: inherit;padding: 5px 12px;z-index: 0;overflow: hidden;border: 1px solid #1d89ff;border-radius: 100px;background: #fff;color: #1d89ff;-webkit-transition: color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1), border-color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1);transition: color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1), border-color 0.3s cubic-bezier(0.02, 0.01, 0.47, 1);}
35
+ #fbuilder .bttn-unite:before {position: absolute;top: 0;left: 0;width: 100%;height: 120%;background: #d6e3ff;content: '';opacity: 0;z-index: -1;-webkit-transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);-webkit-transform: translate3d(-110%, -10%, 0) skewX(-20deg);transform: translate3d(-110%, -10%, 0) skewX(-20deg);}
36
+ #fbuilder .bttn-unite:after {position: absolute;top: 0;left: 0;width: 100%;height: 120%;background: rgba(214,227,255,0.7);content: '';opacity: 0;z-index: -1;-webkit-transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);transition: opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);-webkit-transform: translate3d(110%, -10%, 0) skewX(-20deg);transform: translate3d(110%, -10%, 0) skewX(-20deg);}
37
+ #fbuilder .bttn-unite:hover,
38
+ #fbuilder .bttn-unite:focus {box-shadow: 0 1px 8px rgba(58,51,53,0.3);color: #1d89ff;-webkit-transition: all 0.5s cubic-bezier(0.02, 0.01, 0.47, 1);transition: all 0.5s cubic-bezier(0.02, 0.01, 0.47, 1);}
39
+ #fbuilder .bttn-unite:hover:before,
40
+ #fbuilder .bttn-unite:focus:before {opacity: 1;-webkit-transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);-webkit-transform: translate3d(-50%, -10%, 0) skewX(-20deg);transform: translate3d(-50%, -10%, 0) skewX(-20deg);}
41
+ #fbuilder .bttn-unite:hover:after,
42
+ #fbuilder .bttn-unite:focus:after {opacity: 1;-webkit-transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);transition: opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);transition: transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.25s cubic-bezier(0.02, 0.01, 0.47, 1), -webkit-transform 0.25s cubic-bezier(0.02, 0.01, 0.47, 1);-webkit-transform: translate3d(50%, -10%, 0) skewX(-20deg);transform: translate3d(50%, -10%, 0) skewX(-20deg);}
43
+ #fbuilder .bttn-unite.bttn-xs {padding: 3px 8px;font-size: 12px;font-family: inherit;}
44
+ #fbuilder .bttn-unite.bttn-xs:hover,
45
+ #fbuilder .bttn-unite.bttn-xs:focus {box-shadow: 0 1px 4px rgba(58,51,53,0.3);}
46
+ #fbuilder .bttn-unite.bttn-sm {padding: 4px 10px;font-size: 16px;font-family: inherit;}
47
+ #fbuilder .bttn-unite.bttn-sm:hover,
48
+ #fbuilder .bttn-unite.bttn-sm:focus {box-shadow: 0 1px 6px rgba(58,51,53,0.3);}
49
+ #fbuilder .bttn-unite.bttn-md {font-size: 20px;font-family: inherit;padding: 5px 12px;}
50
+ #fbuilder .bttn-unite.bttn-md:hover,
51
+ #fbuilder .bttn-unite.bttn-md:focus {box-shadow: 0 1px 8px rgba(58,51,53,0.3);}
52
+ #fbuilder .bttn-unite.bttn-lg {padding: 8px 15px;font-size: 24px;font-family: inherit;}
53
+ #fbuilder .bttn-unite.bttn-lg:hover,
54
+ #fbuilder .bttn-unite.bttn-lg:focus {box-shadow: 0 1px 10px rgba(58,51,53,0.3);}
55
+ #fbuilder .bttn-unite.bttn-default {border-color: #1d89ff;color: #1d89ff;}
56
+ #fbuilder .bttn-unite.bttn-default:hover,
57
+ #fbuilder .bttn-unite.bttn-default:focus {background: #d6e3ff;color: #1d89ff;}
58
+ #fbuilder .bttn-unite.bttn-default:before {background: #a7c3ff;}
59
+ #fbuilder .bttn-unite.bttn-default:after {background: #d6e3ff;}
60
+ #fbuilder .bttn-unite.bttn-primary {border-color: #1d89ff;color: #1d89ff;}
61
+ #fbuilder .bttn-unite.bttn-primary:hover,
62
+ #fbuilder .bttn-unite.bttn-primary:focus {background: #1d89ff;color: #fff;}
63
+ #fbuilder .bttn-unite.bttn-primary:before {background: #006de3;}
64
+ #fbuilder .bttn-unite.bttn-primary:after {background: #1d89ff;}
65
+ #fbuilder .bttn-unite.bttn-warning {border-color: #feab3a;color: #feab3a;}
66
+ #fbuilder .bttn-unite.bttn-warning:hover,
67
+ #fbuilder .bttn-unite.bttn-warning:focus {background: #feab3a;color: #fff;}
68
+ #fbuilder .bttn-unite.bttn-warning:before {background: #f89001;}
69
+ #fbuilder .bttn-unite.bttn-warning:after {background: #feab3a;}
70
+ #fbuilder .bttn-unite.bttn-danger {border-color: #ff5964;color: #ff5964;}
71
+ #fbuilder .bttn-unite.bttn-danger:hover,
72
+ #fbuilder .bttn-unite.bttn-danger:focus {background: #ff5964;color: #fff;}
73
+ #fbuilder .bttn-unite.bttn-danger:before {background: #ff1424;}
74
+ #fbuilder .bttn-unite.bttn-danger:after {background: #ff5964;}
75
+ #fbuilder .bttn-unite.bttn-success {border-color: #28b78d;color: #28b78d;}
76
+ #fbuilder .bttn-unite.bttn-success:hover,
77
+ #fbuilder .bttn-unite.bttn-success:focus {background: #28b78d;color: #fff;}
78
+ #fbuilder .bttn-unite.bttn-success:before {background: #209271;}
79
+ #fbuilder .bttn-unite.bttn-success:after {background: #28b78d;}
80
+ #fbuilder .bttn-unite.bttn-royal {border-color: #bd2df5;color: #bd2df5;}
81
+ #fbuilder .bttn-unite.bttn-royal:hover,
82
+ #fbuilder .bttn-unite.bttn-royal:focus {background: #bd2df5;color: #fff;}
83
+ #fbuilder .bttn-unite.bttn-royal:before {background: #a20bdd;}
84
+ #fbuilder .bttn-unite.bttn-royal:after {background: #bd2df5;}