From eb96ede99384cd66f0d9e09ee43933a4386b49c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Thu, 4 Aug 2022 08:49:24 +0200 Subject: [PATCH 1/8] Update docs --- docs/.retype/404.html | 8 ++--- docs/.retype/changelog/index.html | 8 ++--- docs/.retype/index.html | 8 ++--- docs/.retype/news/index.html | 8 ++--- docs/.retype/resources/js/config.js | 2 +- docs/.retype/resources/js/config.min.js | 2 +- docs/.retype/resources/js/search.json | 2 +- docs/.retype/sitemap.xml.gz | Bin 487 -> 493 bytes docs/.retype/usermanual/about/index.html | 14 ++++---- .../usermanual/advanced_usage/index.html | 8 ++--- .../usermanual/calculation-types/index.html | 8 ++--- .../usermanual/example-expressions/index.html | 27 +++++++++++--- .../usermanual/expression-syntax/index.html | 30 ++++++++++++---- docs/.retype/usermanual/fields/index.html | 10 +++--- .../usermanual/import_export/index.html | 8 ++--- .../usermanual/installation/index.html | 8 ++--- docs/.retype/usermanual/templates/index.html | 10 +++--- docs/.retype/usermanual/uninstall/index.html | 8 ++--- docs/.retype/usermanual/usage/index.html | 8 ++--- docs/.retype/usermanual/videos/index.html | 34 +++++++++++++++--- .../example-multi-checkbox-and-visibility.png | Bin 0 -> 394883 bytes docs/usermanual/about.md | 6 ++-- docs/usermanual/example-expressions.md | 21 +++++++++++ docs/usermanual/expression-syntax.md | 4 +++ docs/usermanual/videos.md | 6 +++- 25 files changed, 169 insertions(+), 79 deletions(-) create mode 100644 docs/images/example-multi-checkbox-and-visibility.png diff --git a/docs/.retype/404.html b/docs/.retype/404.html index d1b08e1..9b6b8a9 100644 --- a/docs/.retype/404.html +++ b/docs/.retype/404.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/docs/.retype/changelog/index.html b/docs/.retype/changelog/index.html index 63aace2..b44d739 100644 --- a/docs/.retype/changelog/index.html +++ b/docs/.retype/changelog/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/docs/.retype/index.html b/docs/.retype/index.html index a7a7577..5fd6b5a 100644 --- a/docs/.retype/index.html +++ b/docs/.retype/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/docs/.retype/news/index.html b/docs/.retype/news/index.html index c9f0c1e..60edcfd 100644 --- a/docs/.retype/news/index.html +++ b/docs/.retype/news/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/docs/.retype/resources/js/config.js b/docs/.retype/resources/js/config.js index 484dbec..274c0ca 100644 --- a/docs/.retype/resources/js/config.js +++ b/docs/.retype/resources/js/config.js @@ -1 +1 @@ -var __DOCS_CONFIG__ = {"id":"N8+l5hdt+A2gRFRWINH1qWzl7HeWaB207t/","key":"jlx9/oEDZ7b65eREI+YupQMEE3rkvmsHu8es+v7G11Q.NX/gLpZm5kHplMNND1uSFSrZM2aDJJKzSHCUz+VAuUlAzi4F28x1giWWkBJ0XSJYuZvDtpy1AClNB1AlnnTaeA.91","base":"/","host":"wckalkulator.com","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"2.3.0.711998754141","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties","shortLabel":"Props"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"WC Kalkulator","s":""},{"n":"news","l":"News","s":""},{"n":"usermanual","l":"User Manual","c":false,"o":true,"i":[{"n":"about","l":"About the Plugin","s":""},{"n":"installation","l":"Installation","s":""},{"n":"fields","l":"Field Types","s":""},{"n":"calculation-types","l":"Calculation Modes","s":""},{"n":"expression-syntax","l":"Expression Syntax","s":""},{"n":"example-expressions","l":"Formula Examples","s":""},{"n":"usage","l":"Usage","s":""},{"n":"advanced_usage","l":"Advanced Usage","s":""},{"n":"templates","l":"Templates & Layouts","s":""},{"n":"inventory","l":"Stock Management","s":""},{"n":"import_export","l":"Import/Export","s":""},{"n":"uninstall","l":"Uninstallation","s":""},{"n":"videos","l":"Video Tutorials","s":""}],"s":""},{"n":"changelog","l":"CHANGELOG","s":""}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["/"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false}}; +var __DOCS_CONFIG__ = {"id":"F6vfbAI4s5875iJ/Oot207b8g5aupAnuPud","key":"ShZWun5GIbAeWS/CYtFJRpT9Hc6F5A+3aqwtWHkpYt4.t44YcGcJW60zS9F7uUjcqY9nnfca4I1eS87f2x8D2dAKfcVolZs1TsmJozG/XfH5YZvuuySLRbbyGyAdaEegSg.125","base":"/","host":"wckalkulator.com","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"2.3.0.712060334355","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties","shortLabel":"Props"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"WC Kalkulator","s":""},{"n":"news","l":"News","s":""},{"n":"usermanual","l":"User Manual","c":false,"o":true,"i":[{"n":"about","l":"About the Plugin","s":""},{"n":"installation","l":"Installation","s":""},{"n":"fields","l":"Field Types","s":""},{"n":"calculation-types","l":"Calculation Modes","s":""},{"n":"expression-syntax","l":"Expression Syntax","s":""},{"n":"example-expressions","l":"Formula Examples","s":""},{"n":"usage","l":"Usage","s":""},{"n":"advanced_usage","l":"Advanced Usage","s":""},{"n":"templates","l":"Templates & Layouts","s":""},{"n":"inventory","l":"Stock Management","s":""},{"n":"import_export","l":"Import/Export","s":""},{"n":"uninstall","l":"Uninstallation","s":""},{"n":"videos","l":"Video Tutorials","s":""}],"s":""},{"n":"changelog","l":"CHANGELOG","s":""}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["/"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false}}; diff --git a/docs/.retype/resources/js/config.min.js b/docs/.retype/resources/js/config.min.js index a24d399..234d211 100644 --- a/docs/.retype/resources/js/config.min.js +++ b/docs/.retype/resources/js/config.min.js @@ -1 +1 @@ -var __DOCS_CONFIG__={id:"N8+l5hdt+A2gRFRWINH1qWzl7HeWaB207t/",key:"jlx9/oEDZ7b65eREI+YupQMEE3rkvmsHu8es+v7G11Q.NX/gLpZm5kHplMNND1uSFSrZM2aDJJKzSHCUz+VAuUlAzi4F28x1giWWkBJ0XSJYuZvDtpy1AClNB1AlnnTaeA.91",base:"/",host:"wckalkulator.com",version:"1.0.0",useRelativePaths:true,documentName:"index.html",appendDocumentName:false,trailingSlash:true,preloadSearch:false,cacheBustingToken:"2.3.0.711998754141",cacheBustingStrategy:"query",sidebarFilterPlaceholder:"Filter",toolbarFilterPlaceholder:"Filter",showSidebarFilter:true,filterNotFoundMsg:'No member names found containing the query "{query}"',maxHistoryItems:15,homeIcon:'',access:[{value:"public",label:"Public"},{value:"protected",label:"Protected"}],toolbarLinks:[{id:"fields",label:"Fields"},{id:"properties",label:"Properties",shortLabel:"Props"},{id:"methods",label:"Methods"},{id:"events",label:"Events"}],sidebar:[{n:"/",l:"WC Kalkulator",s:''},{n:"news",l:"News",s:''},{n:"usermanual",l:"User Manual",c:false,o:true,i:[{n:"about",l:"About the Plugin",s:''},{n:"installation",l:"Installation",s:''},{n:"fields",l:"Field Types",s:''},{n:"calculation-types",l:"Calculation Modes",s:''},{n:"expression-syntax",l:"Expression Syntax",s:''},{n:"example-expressions",l:"Formula Examples",s:''},{n:"usage",l:"Usage",s:''},{n:"advanced_usage",l:"Advanced Usage",s:''},{n:"templates",l:"Templates & Layouts",s:''},{n:"inventory",l:"Stock Management",s:''},{n:"import_export",l:"Import/Export",s:''},{n:"uninstall",l:"Uninstallation",s:''},{n:"videos",l:"Video Tutorials",s:''}],s:''},{n:"changelog",l:"CHANGELOG",s:''}],search:{mode:0,minChars:2,maxResults:20,placeholder:"Search",hotkeys:["/"],noResultsFoundMsg:"Sorry, no results found.",recognizeLanguages:true,languages:[0],preload:false}}; \ No newline at end of file +var __DOCS_CONFIG__={id:"F6vfbAI4s5875iJ/Oot207b8g5aupAnuPud",key:"ShZWun5GIbAeWS/CYtFJRpT9Hc6F5A+3aqwtWHkpYt4.t44YcGcJW60zS9F7uUjcqY9nnfca4I1eS87f2x8D2dAKfcVolZs1TsmJozG/XfH5YZvuuySLRbbyGyAdaEegSg.125",base:"/",host:"wckalkulator.com",version:"1.0.0",useRelativePaths:true,documentName:"index.html",appendDocumentName:false,trailingSlash:true,preloadSearch:false,cacheBustingToken:"2.3.0.712060334355",cacheBustingStrategy:"query",sidebarFilterPlaceholder:"Filter",toolbarFilterPlaceholder:"Filter",showSidebarFilter:true,filterNotFoundMsg:'No member names found containing the query "{query}"',maxHistoryItems:15,homeIcon:'',access:[{value:"public",label:"Public"},{value:"protected",label:"Protected"}],toolbarLinks:[{id:"fields",label:"Fields"},{id:"properties",label:"Properties",shortLabel:"Props"},{id:"methods",label:"Methods"},{id:"events",label:"Events"}],sidebar:[{n:"/",l:"WC Kalkulator",s:''},{n:"news",l:"News",s:''},{n:"usermanual",l:"User Manual",c:false,o:true,i:[{n:"about",l:"About the Plugin",s:''},{n:"installation",l:"Installation",s:''},{n:"fields",l:"Field Types",s:''},{n:"calculation-types",l:"Calculation Modes",s:''},{n:"expression-syntax",l:"Expression Syntax",s:''},{n:"example-expressions",l:"Formula Examples",s:''},{n:"usage",l:"Usage",s:''},{n:"advanced_usage",l:"Advanced Usage",s:''},{n:"templates",l:"Templates & Layouts",s:''},{n:"inventory",l:"Stock Management",s:''},{n:"import_export",l:"Import/Export",s:''},{n:"uninstall",l:"Uninstallation",s:''},{n:"videos",l:"Video Tutorials",s:''}],s:''},{n:"changelog",l:"CHANGELOG",s:''}],search:{mode:0,minChars:2,maxResults:20,placeholder:"Search",hotkeys:["/"],noResultsFoundMsg:"Sorry, no results found.",recognizeLanguages:true,languages:[0],preload:false}}; \ No newline at end of file diff --git a/docs/.retype/resources/js/search.json b/docs/.retype/resources/js/search.json index c1740b4..2d90aba 100644 --- a/docs/.retype/resources/js/search.json +++ b/docs/.retype/resources/js/search.json @@ -1 +1 @@ -[[{"l":"WC Kalkulator"},{"l":"Custom Fields and Price Calculator for WooCommerce","p":["WC Kalkulator (WCK) is a WordPress plugin which extends the WooCommerce to use custom extra fields with products and orders. Extra product fields can be used to calculate product price and save information in order details.","Absolutely FREE plugin with PRO features","22 field types to get customer input","Price calculation based on formula, conditional expression or price add-ons.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!","You can sell products by anything. You are not limited to sell only by length, area, volume, etc. You decide how the prices will be calculated."]},{"i":"what-makes-wc-kalkulator-unique-","l":"What makes WC Kalkulator unique ?","p":["When designing the functionality of the plugin, we wanted to obtain software that would be easy to use and highly configurable and suitable for any type of store.","The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields are not used in formulas, but you can use it to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"i":"22-field-types-all-free","l":"22 Field Types (ALL FREE)"},{"l":"Definitions","p":["Field- is used to get user's input on the woocommerce product page. Custom Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset (set of custom product fields) which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the woocommerce custom price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the woocommerce custom price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"i":"formulaexpression-builder","l":"Formula/Expression Builder","p":["Use field's values as variables to calculate product price. Drag&drop conditional statements."]},{"l":"Price Add-Ons","p":["Use custom fields to make Product Add-Ons. This feature is experimental and will be continued in the next releases."]},{"l":"Display Fields","p":["Assign fields to products, categories or product tags. Include/exclude options. Mass assignment."]},{"l":"Validation","p":["Each field has built-in validation tests on user input. You can define additional conditions."]},{"l":"Protected Formula","p":["The price is calculated server-side only, so the Client can't see exact expression."]},{"l":"Advanced Customization","p":["Field HTML templates can be overloaded in your theme file. Each field has CSS class to set custom styles."]},{"l":"Functions","p":["You can use basic math functions in the formula. Fields such as Multi-checkbox, Date Picker, Date Range Picker has additional functions to get sum, min, max value or get date, days between dates values as number."]},{"l":"Global Parameters","p":["You can define numeric variable across all fieldsets. You can modify all prices by global parameters."]},{"l":"Cart","p":["The customer can edit product options after adding to cart."]},{"l":"Compatibility","p":["multisite mode is supported","product shortcodes","translation","virtual and variable products are supported","product regular and sale prices are supported","product tags"]},{"l":"More Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HMTL template of every field can be overridden in a theme directory","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"News","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"i":"version-140-has-been-released","l":"Version 1.4.0 has been released","p":["Update: 2022-07-18","[x] new formula builder[x] apply filters on td elements in field's templates[x] new assignment type: product attribute[x] toggle button to publish/unpublish fieldsets quickly[x] support for stock management and stock reduction multiplier[x] layouts feature - you can choose one or two column layout"]},{"i":"version-130-has-been-released","l":"Version 1.3.0 has been released","p":["Update: 2022-07-04","Price Add-ons","Image upload field","Use dynamic formula in a static field's contents","Settings page","Strlen() function to get a text length"]},{"i":"version-120-has-been-released","l":"Version 1.2.0 has been released","p":["Update: 2022-06-13","many new fields","static fields","field's built-in modifiers","global parameters","functions in expressions","customer can edit product in the cart"]},{"i":"what-we-are-working-on","l":"What we are working on?","p":["a new field: file upload,","add a price parameter to all fields and use the value in the formula,","add global fields, so the product could have a one fieldset with calculations and global fields.","add priority for fieldsets","allow editing fields in the user's cart,","apply fieldsets to categories,","Apply for a new feature by clicking the link at the top.","assign to all products/categories, except ...","customizable field's template","mass assignment of fieldsets to products,","some bug fixes reported by users","stock management for numeric fields,","Update: 2022-01-21","Update: 2022-02-18","We are working on new features:","We released new version 1.1.0 which gives more flexibility and performance. We have also added new features, blow:"]}],[{"l":"About the Plugin","p":["The plugin extends the Woocommerce store with the ability to add your own fields to the product page. Almost all fields are used in formulas to calculate a custom price for a product. The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields can be used to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"l":"Definitions","p":["Field- is used to get user's input on the product page. Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the product price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"l":"Requirements","p":["Minimum tested version, but not recommended","Wordpress v.5.0","Woocommerce v.3.5.0","Maximum tested version","Wordpress v.6.0.0","Woocommerce v.6.6.1","Recommended version","We strongly recommend to use most recent versions of Wordpress and Woocommerce. There is no restriction to PHP version, but please note that PHP below 7.4 is marked as end-of-life. We recommend using PHP7.4 and above. PHP7.4 is supported in Wordpress v5.3 and above.","Supported PHP versions PHP compatibility and Wordpress versions"]},{"l":"Dependencies","p":["Symfony ExpressionLanguage Component","jQuery, jQuery UI (built in Wordpress Core)","Math Expression Evaluator by bugwheels94"]},{"l":"Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","dynamic formula in a static field's contents","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HTML template of every field can be overridden in a theme directory","image upload field (use file size in formula/expression)","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"Conflict with other plugins","p":["This plugin has been tested only with Wordpress and Woocommerce without additional plugins. Note that there may be a conflict with plugins that modifies the product price and user's cart, or has similar functionality. This section will be updated and conflicts will be resolved.","We know about issue with displaying prices in a cart page. In some themes there's an issue with cart page. Theme should display cart item price instead of product price. The plugin modifies cart items, but not products itself."]}],[{"l":"Installation","p":["Installation process is the same as for other plugins. The plugin does not require configuration, it is ready to use. The plugin creates new post type - Fieldset.","The plugin adds new menu in Products> WCK Fieldsets.","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Field Types","p":["The plugin comes with several built-in fields to be used on the product page. Please contact us if you need to add new field types. We are working on the ability to build custom fields as extensions for the plugin. We would like to meet your expectations as much as possible.","Each field has its own parameters, but some parameters are the same for every field. See the list below:","Parameter","Description","Name","Unique field name used in plugin code. It must consist of A-Z, a-z or underscore. For example: product_width, table_height, etc.","Title","Field name showed to the User. For example: Product width, Table height","Hint for Customer","Help message showed in tooltip. For example: Please choose product color from the list.","CSS Class","CSS class applied to the HTML code of the field. You can define additional styles in custom .css files in theme.","Price","If the field is filled in by the customer, the price will be used in the formula. Otherwise the price is 0. This parameter is not present for the: number field and select field.","See Templates section to know how to modify HTML code of any field."]},{"l":"Number","p":["Number Field is the basic field to use in the plugin. It is standard single-line input field, which takes a numeric value and can be used in a formula/expression.","This field is required by default.","Parameter","Description","Min. value","The minimum value of the field","Max. value","The maximum value of the field","Default value","Initial value of the field. This value is loaded into field when user opens the product page."]},{"l":"Select","p":["Select Field is a standard dropdown field. You must define numeric value of options, because this field is used in the formula/expression.","This field is required by default."]},{"l":"Checkbox","p":["Parameter","Description","Default state","Default state of checkbox. Select this option if you want the field to be checked by default"]},{"l":"Color Picker","p":["Color Picker is a standard input text field with jQuery wpColorPicker and IRIS. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required"]},{"l":"Date Picker","p":["Date Picker is a standard input text field with jQuery UI Datepicker. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Range Date Picker","p":["Range Date Picker includes two Date Picker fields connected with each other.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Dropdown","p":["Dropdown field is almost the same as Select field. This field accepts text values.","Parameter","Description","Required","Select this option to make the field required."]},{"l":"Text","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Textarea","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"E-mail","p":["E-mail field is used to get e-mail address from the Customer input. This field has an e-mail validation test.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Radio","p":["Radio field is used to display a group of radio buttons. It has similar funcationality to the Select field, so u can use option's values in the formula/expression.","This field is required by default."]},{"i":"checkbox-group-multi-checkbox","l":"Checkbox Group (Multi Checkbox)","p":["Checkbox Group is used to display a group of checkboxes. It is possible to define selection limit (i.e. customer can choose max 2 options). Multi Checkbox can be used in the expression, for example: is_selected({multi_cb}; 10) checks if user selected the option with value \"10\". You can also use built-in variables {multi_cb:min}(minimal selected value), {multi_cb:max}(maximal selected value), {multi_cb:sum}(sum of selected values)"]},{"l":"Color Swatches","p":["Color Swatches are shown as square thumbnails, which may be selected by a customer. Each options has a numeric value to use in a formula."]},{"l":"Image Swatches","p":["Image Swatches works like Color Swatches, but you can define images instead of colors."]},{"l":"Image Select","p":["Image Select works similar to Image Swatches, but you can define Caption/Title for each image option."]},{"i":"static-html","l":"Static: HTML","p":["Displays content from a HTML code. It is filtered by wp_kses_post. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-attachment","l":"Static: Attachment","p":["You can add file/media attachment, to be downloaded by the Customer on product page."]},{"i":"static-heading","l":"Static: Heading","p":["You can add heading h1-h6 in product page"]},{"i":"static-paragraph","l":"Static: Paragraph","p":["You can add text in paragraph tag in product page. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-hidden","l":"Static: Hidden","p":["You can add hidden input fields to store predefined values. This field does not accept user input."]},{"i":"static-link","l":"Static: Link","p":["You can add link to any website, file attachment, URL."]},{"l":"Image upload","p":["You can get image file from the customer. Files are saved in customer directory on checkout. Go to Settings Page to set cron jobs invervals. Files are uploaded to the temp directory and will be deleted after time. Files will be kept longer if the customer places an order. Customer files will be deleted after 360 days (default option), but you can set your own interval.","You can use file size [MB] parameter in formulas.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Calculation Modes","p":["The Plugin comes with several calculation modes. You can choose one of mentioned below:","OFF- price calculation is turned off. This mode can be use to get user input without changing the product price","Single-line Formula- it is a simple single-line math expression without any logical conditions","Conditional Expression- if the condition if is met, calculate the price according to the assigned formula in = field. You can use multiple conditions. The else formula is used when none of the conditions are met.","Price Add-ons- if the condition if is met, the product price is increased by add value. You can use multiple conditions with all available functions and operators. Both if and add field accepts math and logical expression with variables.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Expression Syntax"},{"l":"Field names"},{"l":"Arithmetic operators"},{"l":"Comparision Operators"},{"l":"Logical Operators"},{"l":"Math Functions","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Formula Examples","p":["In this section, we cover examples of how to use mathematical formulas and expressions. Some of the examples are based on questions asked by users."]},{"i":"1-how-to-add-value-to-a-price-so-that-it-is-not-multiplied-by-quantity","l":"1. How to add value to a price so that it is not multiplied by quantity?","p":["By default, the unit price of the product is calculated. If the customer wants to buy, for example, 2 pieces of a product, the calculated price is multiplied by 2. What to do if we want to add a certain value once, regardless of the quantity purchased. The solution is to divide value by {quantity}. Let's see the example. {field_1} will by multiplied by quantity, but {field_2} is added once."]},{"i":"2-how-to-add-price-for-every-character-in-text-field-","l":"2. How to add price for every character in text field ?","p":["Let's say we have a text field that has to be between 1 and 10 characters long. The price of the product is to change depending on the number of characters entered.","Solution #1 - price per character is constans","Solution #2 - price is different for each character","Next we have to build the formula. We have {global:price_per_char} array and we need to get single value by index. The index is strlen({my_field:text}) - 1, so complete formula looks like this:","Solution #3 - use Price Add-on mode and write multiple if and add expressions. For example:"]},{"i":"3-each-product-has-width-and-height-user-gives-only-one-dimension-and-the-price-is-proportional-to-the-calculated-area","l":"3. Each product has width and height. User gives only one dimension and the price is proportional to the calculated area.","p":["User has to input width, but the height will be calculated with proportions from product dimensions.","First of all, set the product width and height in the product options, so we will be using {product_width} and {product_height} variables. Video: How to use product dimensions. Create number field and name it width. The height will be calculated as proportional to the product dimensions. Look at this equations:","If the price per unit equals 99,00 USD, the result formula will be:","The same formula with \"height\" field instead of \"width\""]},{"i":"4-how-to-decrease-product-price-for-logged-user-by--1000-usd-or-by--5-","l":"4. How to decrease product price for logged user by -10,00 USD or by -5 %","p":["We have built-in variable {is_user_logged} which takes values 1 or 0. So the result formula will be:","or","You must be careful when decreasing prices, because it may be 0 or negative. To protect this, use max() function."]}],[{"l":"Usage","p":["Here we explain how to work with the plugin. Please read carefully whole page. Feel free to contact us if something is not clear.","WCK YouTube tutorials","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site."]},{"l":"Adding new Fieldset","p":["Navigate to Products > WCK Fieldsets in Wordpress dashboard.","Click Add Fieldset to create new one. The empty form looks like below:","Fieldset Title is used only in Wordpress dashboard","Assign to- you can assign this fieldset to products, categories or tags. If product has more than one fieldset, you can set priority.","Higher value have higher priority","Product Fields Settings- here you set options for each field.","Add Field- click on the button to add the field of selected type.","Price Calculation- here you define the formula/expression to calculate the product price. You can choose single-line or conditional mode.","Price Filtering- this option changes product prices in catalog. For example you can set the product price to: from 99,99 USD/m2"]},{"l":"Defining fields","p":["Fields can be added, deleted and reordered (drag&drop). Parameters of each field are described in the Field Types section.","If you appreciate my work - Buy me a Coffee or Donate via PayPal","All settings are validated when saving. Fieldset cannot be saved in case of errors.","Select and Dropdown field has ability to add, delete, import options. You can choose the default option for the field.","The example below shows the Select field with two options with a default option. In this case the first option is default."]},{"l":"Defining expressions","p":["You are responsible for preparing the correct formula, mathematically and logically correct. Be careful and always test expressions. The result (the price) has to be a positive number greater than zero. It is validated during the calculation process.","The Expression can be defined as single-line or conditional. You can use Number and Select fields as variables in the formula. You can also use other fields in the expression and predefined variables {product_price}, {product_regular_price}, {quantity}","Some other fields has a price option. For example the text field {my_text} has price 50,00 USD and is not required. If the customer fill in this field the price of the field will be 50,00. But if the customer leaves this field empty the price will be 0,00. It is important if you take {my_text} in your expression.","The \"=\" (equals sign) is the calculated product price. The plugin checks the conditions one by one. If the condition is true, it returns the value of the assigned formula.","First option - single-line expression:","Second option - conditional expression:","Expression builder has simple autocompletion feature. Please click Update list to add fields to autocompletion. When you type the formula, enter \"{\" sign and you see the list of available fields."]},{"l":"Example of conditional expression","p":["First, we have to define two Number or Select fields named width and height. The price of the product can be 100 USD, 200 USD or (300+area* 0.05) USD.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Advanced Usage"},{"i":"how-to-get-input-text-length-character-count-","l":"How to get input text length (character count) ?","p":["Add text field with name field_name.","You can get input text using {field_name:text}. There's strlen() function which returns text length, so strlen({field_name:text}) returns input characters count."]},{"i":"how-to-use-multi-checkbox-field-","l":"How to use Multi Checkbox field ?","p":["Let's add multi checkbox field named field_mcb. You can use in expression:","{field_mcb:sum}- sum of selected values","{field_mcb:min}- minimal selected value","{field_mcb:max}- maximal selected value"]},{"i":"how-to-use-range-date-picker-field-","l":"How to use Range Date Picker field ?","p":["Range date picker has two input fields - \"from\" and \"to\" dates. Let's add a new field named rdp","{rdp:date_from}- date \"from\" as unix timestamp","{rdp:date_to}- date \"to\" as unix timestamp","{rdp:days}- number of days between two dates (absolute integer)"]},{"i":"how-deal-with-upload-field-","l":"How deal with Upload field ?","p":["Add Upload/Image Upload field named file","{file}- returns field price defined in the \"Price\" option","{file:size}- returns input file size in MB"]},{"i":"products-variables","l":"Product's variables","p":["Expression builder comes with several built-in variables to use in expressions. The value of that parameters is according to the current product and may be different for each product.","{product_price}- current product price (sale or regular)","{product_regular_price}- current product regular price","{product_weight}- current product weight from Product Data > Shipping","{product_width}- current product width from Product Data > Shipping","{product_height}- current product height from Product Data > Shipping","{product_length}- current product length from Product Data > Shipping","{is_user_logged}- 1 if current visitor is logged in, 0 otherwise","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Templates","p":["WC Kalkulator v1.1.0 brings a new approach to modifying the appearance of fields. Every file in view directory can be overriden. Just copy file from the view directory to the themes/your-theme/wc-kalkulator directory and make your modifications.","For example: view/fields/front/text.php should be copied to the /themes/your-theme/wc-kalkulator/fields/front/text.php"]},{"l":"Structure of the view directory","p":["Files","Description","views/fields/front/*.php","Template files for every field rendered on the produt page","views/woocommerce/catalog_price.php","Template for the price filter - prefix, price, suffix.","views/woocommerce/price_block.php","Template for the \"Total\" in the product page","views/woocommerce/product.php","Container for the fields on the product page"]},{"l":"Filters and Hooks","p":["Example filter to change td class=label tag in field template","Example filter to change td class=value tag in field template"]},{"l":"Layouts","p":["Layouts has beed added in v 1.4.0. You can choose default one column layout or switch to two column layout. In this video I show how to use layouts feature.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"i":"stock-management--inventory","l":"Stock Management / Inventory","p":["WC Kalkulator v 1.4.0 brings support for stock management and stock quantity reduction. This feature is available for single and variable products. The idea is to reduce a stock quantity by custom value, which is Quantity x Multiplier.","Multiplier is what you can set in Fieldset's Settings. This value can be a numer or math formula. You can use all available fields, operators and functions.","Product must have stock management enabled in product option"]},{"l":"Video Tutorial","p":["In this video I show how to reduce stock quantity by field's value. Stock quantity is reduced by 90 pieces, because field value is 45 and quantity is 2."]}],[{"i":"importexport-fieldsets","l":"Import/Export fieldsets","p":["WC Kalkulator is built on the new Post Type, which is full compatible with core import/export functionality in Wordpress. Navigate to Tools Export to export Fieldset post type to XML file. Use Tools Import to import that file.","You can also use any importer/exporter plugin in Wordpress.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Uninstallation","p":["The plugin may be deactivated without losing any of its data.","When the plugin is deactivated, it is possible to uninstall it. During the uninstallation process, all data will be deleted from the Wordpress database.","If you want to save all data for later, please export to the XML file.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Video Tutorials","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"1. Basic Usage"},{"i":"2-how-to-work-with-fieldsets-priority-","l":"2. How to work with fieldset's priority ?"},{"i":"3-how-to-use-date-pickers-","l":"3. How to use Date Pickers ?"},{"i":"4-what-is-global-parameter-and-how-to-use-it-","l":"4. What is Global Parameter and how to use it ?"},{"i":"5-how-to-use-text-input-and-count-text-length-","l":"5. How to use text input and count text length ?"},{"i":"6-how-to-set-custom-field-template-template-overriding-","l":"6. How to set custom field template (template overriding) ?"},{"i":"7-how-to-use-product-dimensions-and-weight-in-formula-","l":"7. How to use product dimensions and weight in formula ?"},{"i":"8-how-to-set-different-price-for-loggedunlogged-users-","l":"8. How to set different price for logged/unlogged users ?"},{"i":"9-how-to-use-arrays-and-json-objects-in-global-parameters-","l":"9. How to use arrays and json objects in Global Parameters ?"}],[{"l":"CHANGELOG","p":["2022-01-20 v.1.0.0","2022-02-18 v.1.1.0","2022-04-20 v.1.1.1","2022-05-08 v.1.1.2","2022-06-13 v.1.2.0","2022-06-13 v.1.2.1","2022-06-14 v.1.2.2","2022-06-15 v.1.2.3","2022-07-04 v.1.3.0","2022-07-06 v.1.3.1","2022-07-07 v.1.3.2","2022-07-11 v 1.3.3","2022-07-21 v.1.4.0","2022-07-22 v.1.4.1, 1.4.2","2022-07-22 v.1.4.3","add notices","added a price option to all fields","Added new fields: email, radio","added support for array and json objects in global parameters","added the priority option to fieldsets","Additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","apply filters on td elements in field's templates","Assign fieldset to product's tags","assign the fieldset to products/categories on the fieldset's edit page","Bug fix","Bug fixed: missing numberposts argument on get_posts()","Bug fixed: str_replace on array","bug fixes","conditional visibility (set rules to show/hide fields)","cron jobs to keep uploaded files clean","Customer can edit cart item","field's template can be overrided in your theme folder","fieldset post type","fixed field builder (js script issue)","fixed issue with price calculation","fixed typo in HTML code for dropdown and select fields","Global parameters can be defined and used in formula","Image upload field added – you can use file size parameter in expressions","Initial release","layouts feature - you can choose one or two column layout","Math functions to use in the expression","more columns on fieldset table","new assignment type: product attribute","new calculation mode - Price Add-ons","new edit page","New fields: image select, image swatches, color swatches, checkbox group (multicheckbox), HTML, Heading, Paragraph, Hidden, Link, Attachment","new formula builder","new variable to determine if current visitor is logged in","new variables to get product's weight, width, height, length","performance fixes","Settings page added – you can define custom product form selector, you can toggle error messages for admin/manager","strlen() function added to expressions – it returns text length","support for stock management and stock reduction multiplier","text field has new option: pattern (regexp)","toggle button to publish/unpublish fieldsets quickly","upload path settings","you can use formulas in HTML/Paragraph field, for example: {=*/100}"]}]] \ No newline at end of file +[[{"l":"WC Kalkulator"},{"l":"Custom Fields and Price Calculator for WooCommerce","p":["WC Kalkulator (WCK) is a WordPress plugin which extends the WooCommerce to use custom extra fields with products and orders. Extra product fields can be used to calculate product price and save information in order details.","Absolutely FREE plugin with PRO features","22 field types to get customer input","Price calculation based on formula, conditional expression or price add-ons.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!","You can sell products by anything. You are not limited to sell only by length, area, volume, etc. You decide how the prices will be calculated."]},{"i":"what-makes-wc-kalkulator-unique-","l":"What makes WC Kalkulator unique ?","p":["When designing the functionality of the plugin, we wanted to obtain software that would be easy to use and highly configurable and suitable for any type of store.","The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields are not used in formulas, but you can use it to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"i":"22-field-types-all-free","l":"22 Field Types (ALL FREE)"},{"l":"Definitions","p":["Field- is used to get user's input on the woocommerce product page. Custom Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset (set of custom product fields) which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the woocommerce custom price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the woocommerce custom price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"i":"formulaexpression-builder","l":"Formula/Expression Builder","p":["Use field's values as variables to calculate product price. Drag&drop conditional statements."]},{"l":"Price Add-Ons","p":["Use custom fields to make Product Add-Ons. This feature is experimental and will be continued in the next releases."]},{"l":"Display Fields","p":["Assign fields to products, categories or product tags. Include/exclude options. Mass assignment."]},{"l":"Validation","p":["Each field has built-in validation tests on user input. You can define additional conditions."]},{"l":"Protected Formula","p":["The price is calculated server-side only, so the Client can't see exact expression."]},{"l":"Advanced Customization","p":["Field HTML templates can be overloaded in your theme file. Each field has CSS class to set custom styles."]},{"l":"Functions","p":["You can use basic math functions in the formula. Fields such as Multi-checkbox, Date Picker, Date Range Picker has additional functions to get sum, min, max value or get date, days between dates values as number."]},{"l":"Global Parameters","p":["You can define numeric variable across all fieldsets. You can modify all prices by global parameters."]},{"l":"Cart","p":["The customer can edit product options after adding to cart."]},{"l":"Compatibility","p":["multisite mode is supported","product shortcodes","translation","virtual and variable products are supported","product regular and sale prices are supported","product tags"]},{"l":"More Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HMTL template of every field can be overridden in a theme directory","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"News","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"i":"version-140-has-been-released","l":"Version 1.4.0 has been released","p":["Update: 2022-07-18","[x] new formula builder[x] apply filters on td elements in field's templates[x] new assignment type: product attribute[x] toggle button to publish/unpublish fieldsets quickly[x] support for stock management and stock reduction multiplier[x] layouts feature - you can choose one or two column layout"]},{"i":"version-130-has-been-released","l":"Version 1.3.0 has been released","p":["Update: 2022-07-04","Price Add-ons","Image upload field","Use dynamic formula in a static field's contents","Settings page","Strlen() function to get a text length"]},{"i":"version-120-has-been-released","l":"Version 1.2.0 has been released","p":["Update: 2022-06-13","many new fields","static fields","field's built-in modifiers","global parameters","functions in expressions","customer can edit product in the cart"]},{"i":"what-we-are-working-on","l":"What we are working on?","p":["a new field: file upload,","add a price parameter to all fields and use the value in the formula,","add global fields, so the product could have a one fieldset with calculations and global fields.","add priority for fieldsets","allow editing fields in the user's cart,","apply fieldsets to categories,","Apply for a new feature by clicking the link at the top.","assign to all products/categories, except ...","customizable field's template","mass assignment of fieldsets to products,","some bug fixes reported by users","stock management for numeric fields,","Update: 2022-01-21","Update: 2022-02-18","We are working on new features:","We released new version 1.1.0 which gives more flexibility and performance. We have also added new features, blow:"]}],[{"l":"About the Plugin","p":["The plugin extends the Woocommerce store with the ability to add your own fields to the product page. Almost all fields are used in formulas to calculate a custom price for a product. The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields can be used to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"l":"Definitions","p":["Field- is used to get user's input on the product page. Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the product price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"l":"Requirements","p":["Minimum tested version, but not recommended","Wordpress v.5.0","Woocommerce v.3.5","Maximum tested version","Wordpress v.6.0","Woocommerce v.6.7","Recommended version","We strongly recommend to use most recent versions of Wordpress and Woocommerce. There is no restriction to PHP version, but please note that PHP below 7.4 is marked as end-of-life. We recommend using PHP7.4 and above. PHP7.4 is supported in Wordpress v5.3 and above.","Supported PHP versions PHP compatibility and Wordpress versions"]},{"l":"Dependencies","p":["Symfony ExpressionLanguage Component","jQuery, jQuery UI (built in Wordpress Core)","Math Expression Evaluator by bugwheels94"]},{"l":"Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","dynamic formula in a static field's contents","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HTML template of every field can be overridden in a theme directory","image upload field (use file size in formula/expression)","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"Conflict with other plugins","p":["This plugin has been tested only with Wordpress and Woocommerce without additional plugins. Note that there may be a conflict with plugins that modifies the product price and user's cart, or has similar functionality. This section will be updated and conflicts will be resolved.","We know about issue with displaying prices in a cart page. In some themes there's an issue with cart page. Theme should display cart item price instead of product price. The plugin modifies cart items, but not products itself."]}],[{"l":"Installation","p":["Installation process is the same as for other plugins. The plugin does not require configuration, it is ready to use. The plugin creates new post type - Fieldset.","The plugin adds new menu in Products> WCK Fieldsets.","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Field Types","p":["The plugin comes with several built-in fields to be used on the product page. Please contact us if you need to add new field types. We are working on the ability to build custom fields as extensions for the plugin. We would like to meet your expectations as much as possible.","Each field has its own parameters, but some parameters are the same for every field. See the list below:","Parameter","Description","Name","Unique field name used in plugin code. It must consist of A-Z, a-z or underscore. For example: product_width, table_height, etc.","Title","Field name showed to the User. For example: Product width, Table height","Hint for Customer","Help message showed in tooltip. For example: Please choose product color from the list.","CSS Class","CSS class applied to the HTML code of the field. You can define additional styles in custom .css files in theme.","Price","If the field is filled in by the customer, the price will be used in the formula. Otherwise the price is 0. This parameter is not present for the: number field and select field.","See Templates section to know how to modify HTML code of any field."]},{"l":"Number","p":["Number Field is the basic field to use in the plugin. It is standard single-line input field, which takes a numeric value and can be used in a formula/expression.","This field is required by default.","Parameter","Description","Min. value","The minimum value of the field","Max. value","The maximum value of the field","Default value","Initial value of the field. This value is loaded into field when user opens the product page."]},{"l":"Select","p":["Select Field is a standard dropdown field. You must define numeric value of options, because this field is used in the formula/expression.","This field is required by default."]},{"l":"Checkbox","p":["Parameter","Description","Default state","Default state of checkbox. Select this option if you want the field to be checked by default"]},{"l":"Color Picker","p":["Color Picker is a standard input text field with jQuery wpColorPicker and IRIS. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required"]},{"l":"Date Picker","p":["Date Picker is a standard input text field with jQuery UI Datepicker. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Range Date Picker","p":["Range Date Picker includes two Date Picker fields connected with each other.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Dropdown","p":["Dropdown field is almost the same as Select field. This field accepts text values.","Parameter","Description","Required","Select this option to make the field required."]},{"l":"Text","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Textarea","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"E-mail","p":["E-mail field is used to get e-mail address from the Customer input. This field has an e-mail validation test.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Radio","p":["Radio field is used to display a group of radio buttons. It has similar funcationality to the Select field, so u can use option's values in the formula/expression.","This field is required by default."]},{"i":"checkbox-group-multi-checkbox","l":"Checkbox Group (Multi Checkbox)","p":["Checkbox Group is used to display a group of checkboxes. It is possible to define selection limit (i.e. customer can choose max 2 options). Multi Checkbox can be used in the expression, for example: is_selected({multi_cb}; 10) checks if user selected the option with value \"10\". You can also use built-in variables {multi_cb:min}(minimal selected value), {multi_cb:max}(maximal selected value), {multi_cb:sum}(sum of selected values)"]},{"l":"Color Swatches","p":["Color Swatches are shown as square thumbnails, which may be selected by a customer. Each options has a numeric value to use in a formula."]},{"l":"Image Swatches","p":["Image Swatches works like Color Swatches, but you can define images instead of colors."]},{"l":"Image Select","p":["Image Select works similar to Image Swatches, but you can define Caption/Title for each image option."]},{"i":"static-html","l":"Static: HTML","p":["Displays content from a HTML code. It is filtered by wp_kses_post. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-attachment","l":"Static: Attachment","p":["You can add file/media attachment, to be downloaded by the Customer on product page."]},{"i":"static-heading","l":"Static: Heading","p":["You can add heading h1-h6 in product page"]},{"i":"static-paragraph","l":"Static: Paragraph","p":["You can add text in paragraph tag in product page. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-hidden","l":"Static: Hidden","p":["You can add hidden input fields to store predefined values. This field does not accept user input."]},{"i":"static-link","l":"Static: Link","p":["You can add link to any website, file attachment, URL."]},{"l":"Image upload","p":["You can get image file from the customer. Files are saved in customer directory on checkout. Go to Settings Page to set cron jobs invervals. Files are uploaded to the temp directory and will be deleted after time. Files will be kept longer if the customer places an order. Customer files will be deleted after 360 days (default option), but you can set your own interval.","You can use file size [MB] parameter in formulas.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Calculation Modes","p":["The Plugin comes with several calculation modes. You can choose one of mentioned below:","OFF- price calculation is turned off. This mode can be use to get user input without changing the product price","Single-line Formula- it is a simple single-line math expression without any logical conditions","Conditional Expression- if the condition if is met, calculate the price according to the assigned formula in = field. You can use multiple conditions. The else formula is used when none of the conditions are met.","Price Add-ons- if the condition if is met, the product price is increased by add value. You can use multiple conditions with all available functions and operators. Both if and add field accepts math and logical expression with variables.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Expression Syntax"},{"l":"Field names"},{"l":"Arithmetic operators"},{"l":"Comparision Operators"},{"l":"Logical Operators"},{"l":"Math Functions","p":["Use semicolon ; to separate arguments in functions","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Formula Examples","p":["In this section, we cover examples of how to use mathematical formulas and expressions. Some of the examples are based on questions asked by users."]},{"i":"1-how-to-add-value-to-a-price-so-that-it-is-not-multiplied-by-quantity","l":"1. How to add value to a price so that it is not multiplied by quantity?","p":["By default, the unit price of the product is calculated. If the customer wants to buy, for example, 2 pieces of a product, the calculated price is multiplied by 2. What to do if we want to add a certain value once, regardless of the quantity purchased. The solution is to divide value by {quantity}. Let's see the example. {field_1} will by multiplied by quantity, but {field_2} is added once."]},{"i":"2-how-to-add-price-for-every-character-in-text-field-","l":"2. How to add price for every character in text field ?","p":["Let's say we have a text field that has to be between 1 and 10 characters long. The price of the product is to change depending on the number of characters entered.","Solution #1 - price per character is constans","Solution #2 - price is different for each character","Next we have to build the formula. We have {global:price_per_char} array and we need to get single value by index. The index is strlen({my_field:text}) - 1, so complete formula looks like this:","Solution #3 - use Price Add-on mode and write multiple if and add expressions. For example:"]},{"i":"3-each-product-has-width-and-height-user-gives-only-one-dimension-and-the-price-is-proportional-to-the-calculated-area","l":"3. Each product has width and height. User gives only one dimension and the price is proportional to the calculated area.","p":["User has to input width, but the height will be calculated with proportions from product dimensions.","First of all, set the product width and height in the product options, so we will be using {product_width} and {product_height} variables. Video: How to use product dimensions. Create number field and name it width. The height will be calculated as proportional to the product dimensions. Look at this equations:","If the price per unit equals 99,00 USD, the result formula will be:","The same formula with \"height\" field instead of \"width\""]},{"i":"4-how-to-decrease-product-price-for-logged-user-by--1000-usd-or-by--5-","l":"4. How to decrease product price for logged user by -10,00 USD or by -5 %","p":["We have built-in variable {is_user_logged} which takes values 1 or 0. So the result formula will be:","or","You must be careful when decreasing prices, because it may be 0 or negative. To protect this, use max() function."]},{"i":"5-how-to-use-multicheckbox-and-conditional-number-fields-","l":"5. How to use multicheckbox and conditional number fields ?","p":["In this example we define multicheckbox field named {multi_cb} and three number fields {num_a}, {num_b}, {num_c}.","Multicheckbox {multi_cb} has three options:","value: 1, option title: Option A","value: 2, option title: Option B","value: 3, option title: Option C","Each of number fields {num_a}, {num_b}, {num_c} are visible for one of three {multi_cb} options. So, we need to define visibility rules. For example field {num_a} has rule {multi_cb} == 1, which means that this field will be visible if user checked \"Option A\".","Next, we need to go to \"Price Add-ons\" to set formulas. To check if user has selected certain option we use is_selected() function. This is example how to calculate price based on selected option and number field value:","if is_selected( {multi_cb}; 1 ) add {num_a} * 100","if is_selected( {multi_cb}; 2 ) add {num_b} * 250","if is_selected( {multi_cb}; 3 ) add {num_c} * 500"]}],[{"l":"Usage","p":["Here we explain how to work with the plugin. Please read carefully whole page. Feel free to contact us if something is not clear.","WCK YouTube tutorials","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site."]},{"l":"Adding new Fieldset","p":["Navigate to Products > WCK Fieldsets in Wordpress dashboard.","Click Add Fieldset to create new one. The empty form looks like below:","Fieldset Title is used only in Wordpress dashboard","Assign to- you can assign this fieldset to products, categories or tags. If product has more than one fieldset, you can set priority.","Higher value have higher priority","Product Fields Settings- here you set options for each field.","Add Field- click on the button to add the field of selected type.","Price Calculation- here you define the formula/expression to calculate the product price. You can choose single-line or conditional mode.","Price Filtering- this option changes product prices in catalog. For example you can set the product price to: from 99,99 USD/m2"]},{"l":"Defining fields","p":["Fields can be added, deleted and reordered (drag&drop). Parameters of each field are described in the Field Types section.","If you appreciate my work - Buy me a Coffee or Donate via PayPal","All settings are validated when saving. Fieldset cannot be saved in case of errors.","Select and Dropdown field has ability to add, delete, import options. You can choose the default option for the field.","The example below shows the Select field with two options with a default option. In this case the first option is default."]},{"l":"Defining expressions","p":["You are responsible for preparing the correct formula, mathematically and logically correct. Be careful and always test expressions. The result (the price) has to be a positive number greater than zero. It is validated during the calculation process.","The Expression can be defined as single-line or conditional. You can use Number and Select fields as variables in the formula. You can also use other fields in the expression and predefined variables {product_price}, {product_regular_price}, {quantity}","Some other fields has a price option. For example the text field {my_text} has price 50,00 USD and is not required. If the customer fill in this field the price of the field will be 50,00. But if the customer leaves this field empty the price will be 0,00. It is important if you take {my_text} in your expression.","The \"=\" (equals sign) is the calculated product price. The plugin checks the conditions one by one. If the condition is true, it returns the value of the assigned formula.","First option - single-line expression:","Second option - conditional expression:","Expression builder has simple autocompletion feature. Please click Update list to add fields to autocompletion. When you type the formula, enter \"{\" sign and you see the list of available fields."]},{"l":"Example of conditional expression","p":["First, we have to define two Number or Select fields named width and height. The price of the product can be 100 USD, 200 USD or (300+area* 0.05) USD.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Advanced Usage"},{"i":"how-to-get-input-text-length-character-count-","l":"How to get input text length (character count) ?","p":["Add text field with name field_name.","You can get input text using {field_name:text}. There's strlen() function which returns text length, so strlen({field_name:text}) returns input characters count."]},{"i":"how-to-use-multi-checkbox-field-","l":"How to use Multi Checkbox field ?","p":["Let's add multi checkbox field named field_mcb. You can use in expression:","{field_mcb:sum}- sum of selected values","{field_mcb:min}- minimal selected value","{field_mcb:max}- maximal selected value"]},{"i":"how-to-use-range-date-picker-field-","l":"How to use Range Date Picker field ?","p":["Range date picker has two input fields - \"from\" and \"to\" dates. Let's add a new field named rdp","{rdp:date_from}- date \"from\" as unix timestamp","{rdp:date_to}- date \"to\" as unix timestamp","{rdp:days}- number of days between two dates (absolute integer)"]},{"i":"how-deal-with-upload-field-","l":"How deal with Upload field ?","p":["Add Upload/Image Upload field named file","{file}- returns field price defined in the \"Price\" option","{file:size}- returns input file size in MB"]},{"i":"products-variables","l":"Product's variables","p":["Expression builder comes with several built-in variables to use in expressions. The value of that parameters is according to the current product and may be different for each product.","{product_price}- current product price (sale or regular)","{product_regular_price}- current product regular price","{product_weight}- current product weight from Product Data > Shipping","{product_width}- current product width from Product Data > Shipping","{product_height}- current product height from Product Data > Shipping","{product_length}- current product length from Product Data > Shipping","{is_user_logged}- 1 if current visitor is logged in, 0 otherwise","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Templates","p":["WC Kalkulator v1.1.0 brings a new approach to modifying the appearance of fields. Every file in view directory can be overriden. Just copy file from the view directory to the themes/your-theme/wc-kalkulator directory and make your modifications.","For example: view/fields/front/text.php should be copied to the /themes/your-theme/wc-kalkulator/fields/front/text.php"]},{"l":"Structure of the view directory","p":["Files","Description","views/fields/front/*.php","Template files for every field rendered on the produt page","views/woocommerce/catalog_price.php","Template for the price filter - prefix, price, suffix.","views/woocommerce/price_block.php","Template for the \"Total\" in the product page","views/woocommerce/product.php","Container for the fields on the product page"]},{"l":"Filters and Hooks","p":["Example filter to change td class=label tag in field template","Example filter to change td class=value tag in field template"]},{"l":"Layouts","p":["Layouts has beed added in v 1.4.0. You can choose default one column layout or switch to two column layout. In this video I show how to use layouts feature.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"i":"stock-management--inventory","l":"Stock Management / Inventory","p":["WC Kalkulator v 1.4.0 brings support for stock management and stock quantity reduction. This feature is available for single and variable products. The idea is to reduce a stock quantity by custom value, which is Quantity x Multiplier.","Multiplier is what you can set in Fieldset's Settings. This value can be a numer or math formula. You can use all available fields, operators and functions.","Product must have stock management enabled in product option"]},{"l":"Video Tutorial","p":["In this video I show how to reduce stock quantity by field's value. Stock quantity is reduced by 90 pieces, because field value is 45 and quantity is 2."]}],[{"i":"importexport-fieldsets","l":"Import/Export fieldsets","p":["WC Kalkulator is built on the new Post Type, which is full compatible with core import/export functionality in Wordpress. Navigate to Tools Export to export Fieldset post type to XML file. Use Tools Import to import that file.","You can also use any importer/exporter plugin in Wordpress.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Uninstallation","p":["The plugin may be deactivated without losing any of its data.","When the plugin is deactivated, it is possible to uninstall it. During the uninstallation process, all data will be deleted from the Wordpress database.","If you want to save all data for later, please export to the XML file.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Video Tutorials","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"1. Basic Usage"},{"i":"2-how-to-work-with-fieldsets-priority-","l":"2. How to work with fieldset's priority ?"},{"i":"3-how-to-use-date-pickers-","l":"3. How to use Date Pickers ?"},{"i":"4-what-is-global-parameter-and-how-to-use-it-","l":"4. What is Global Parameter and how to use it ?"},{"i":"5-how-to-use-text-input-and-count-text-length-","l":"5. How to use text input and count text length ?"},{"i":"6-how-to-set-custom-field-template-template-overriding-","l":"6. How to set custom field template (template overriding) ?"},{"i":"7-how-to-use-product-dimensions-and-weight-in-formula-","l":"7. How to use product dimensions and weight in formula ?"},{"i":"8-how-to-set-different-price-for-loggedunlogged-users-","l":"8. How to set different price for logged/unlogged users ?"},{"i":"9-how-to-use-arrays-and-json-objects-in-global-parameters-","l":"9. How to use arrays and json objects in Global Parameters ?"},{"i":"10-stock-management-reduction-multiplier","l":"10. Stock Management (Reduction Multiplier)"},{"i":"11-layouts-two-column-layout","l":"11. Layouts, two-column layout"}],[{"l":"CHANGELOG","p":["2022-01-20 v.1.0.0","2022-02-18 v.1.1.0","2022-04-20 v.1.1.1","2022-05-08 v.1.1.2","2022-06-13 v.1.2.0","2022-06-13 v.1.2.1","2022-06-14 v.1.2.2","2022-06-15 v.1.2.3","2022-07-04 v.1.3.0","2022-07-06 v.1.3.1","2022-07-07 v.1.3.2","2022-07-11 v 1.3.3","2022-07-21 v.1.4.0","2022-07-22 v.1.4.1, 1.4.2","2022-07-22 v.1.4.3","add notices","added a price option to all fields","Added new fields: email, radio","added support for array and json objects in global parameters","added the priority option to fieldsets","Additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","apply filters on td elements in field's templates","Assign fieldset to product's tags","assign the fieldset to products/categories on the fieldset's edit page","Bug fix","Bug fixed: missing numberposts argument on get_posts()","Bug fixed: str_replace on array","bug fixes","conditional visibility (set rules to show/hide fields)","cron jobs to keep uploaded files clean","Customer can edit cart item","field's template can be overrided in your theme folder","fieldset post type","fixed field builder (js script issue)","fixed issue with price calculation","fixed typo in HTML code for dropdown and select fields","Global parameters can be defined and used in formula","Image upload field added – you can use file size parameter in expressions","Initial release","layouts feature - you can choose one or two column layout","Math functions to use in the expression","more columns on fieldset table","new assignment type: product attribute","new calculation mode - Price Add-ons","new edit page","New fields: image select, image swatches, color swatches, checkbox group (multicheckbox), HTML, Heading, Paragraph, Hidden, Link, Attachment","new formula builder","new variable to determine if current visitor is logged in","new variables to get product's weight, width, height, length","performance fixes","Settings page added – you can define custom product form selector, you can toggle error messages for admin/manager","strlen() function added to expressions – it returns text length","support for stock management and stock reduction multiplier","text field has new option: pattern (regexp)","toggle button to publish/unpublish fieldsets quickly","upload path settings","you can use formulas in HTML/Paragraph field, for example: {=*/100}"]}]] \ No newline at end of file diff --git a/docs/.retype/sitemap.xml.gz b/docs/.retype/sitemap.xml.gz index 96253867e3ef0e2c54a7c9fb217830b5698743ea..104aba56d6e9c3ef10ad53ebcd203360c104e3fc 100644 GIT binary patch delta 478 zcmV<40U`e91MLHl8GlZKmC)Nh0ln;{@`6jO8XI8~lDDrRXjheX9i)0s2G5NAV`lsx zPA|7kMpr%vm=^IPhTbl=lV2jIY>7cdQGmr7m%AvMPk)+M_at>)&i-Z&s6Uwe z7$viMNNe4J6PV4bBQv(sO^G4K2|Of_R2WkPDLVXgeyjE2+Ydqy!rn{wsVDIJZ9W;S zM{h+?d@^1RbgVF>c}~&(-yASK9=-`O8a{MPjZ6aeOOMtIg-PWy1NW2^KBzqj2PKrT zOgfY6u?>ZT1%J(g$@)GigGU%4o6ipS&xr|CHCHPKj7B1p>Tlw z)(_mwqLG-pvh22{=LpR+FJMSM*7cGne>k7icp=PY)$kFLA{^pqSj$7yl^g@=M{{MW z=FQs%x_yNfy3DI?B%r#vsnR>clk2d`E~doWZREQOS65${YPr;{zq9Z%j0nZ(ztVis z+bdUY{~jbw0mW8yy&mkFyOeGT()wAz`>57A6$C8cFu00_>n-vH@e_e1f1d!$;(qVS U-6sG50RR630CZ4@9uEot0QvalWdHyG delta 472 zcmV;}0Vn?L1Lp&f8GnXgCG@sWKref#yxE+go;L1ncDR~Z248wrSS~Z<)&*5wJBRYmJ<>54qLUR*XXQ|KO#h8HtFwb+WJHvZ6 z=va*{(DlW>Xs~Sp7#HCqhTblw7hfXhWQ{>ZQGnGNmWLo%PJdcf`y^CdF8+E6s6Uwa zm;^IwjBC|{6IjffBh#i=O^G4K5zHe!-O^2 zJLZKg^~d(!aevXc%ZSqo%Lid9Z^PvV)S2WzUb|hOS^yfk|vL0 z+x3GQ&6{mXyLh?!iN}7F+nn+O=5ZKYyN0Ws36L+nm}WF_jwtf?39v5q_pUsA0ssL2 O{{sLsoyF4+3IG6 - + @@ -30,11 +30,11 @@ - + - + - +
@@ -294,12 +294,12 @@

Minimum tested version, but not recommended

  • Wordpress v.5.0
  • -
  • Woocommerce v.3.5.0
  • +
  • Woocommerce v.3.5

Maximum tested version

    -
  • Wordpress v.6.0.0
  • -
  • Woocommerce v.6.6.1
  • +
  • Wordpress v.6.0
  • +
  • Woocommerce v.6.7

Recommended version

We strongly recommend to use most recent versions of Wordpress and Woocommerce. diff --git a/docs/.retype/usermanual/advanced_usage/index.html b/docs/.retype/usermanual/advanced_usage/index.html index 407b629..702ef9a 100644 --- a/docs/.retype/usermanual/advanced_usage/index.html +++ b/docs/.retype/usermanual/advanced_usage/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +

diff --git a/docs/.retype/usermanual/calculation-types/index.html b/docs/.retype/usermanual/calculation-types/index.html index 01a1335..67bbbad 100644 --- a/docs/.retype/usermanual/calculation-types/index.html +++ b/docs/.retype/usermanual/calculation-types/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/docs/.retype/usermanual/example-expressions/index.html b/docs/.retype/usermanual/example-expressions/index.html index 45f71c0..5bbd28c 100644 --- a/docs/.retype/usermanual/example-expressions/index.html +++ b/docs/.retype/usermanual/example-expressions/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
@@ -375,6 +375,25 @@

= max( {product_price} * (1 - 0.05 * {is_user_logged}); 0.99 )


+ +

+ # + 5. How to use multicheckbox and conditional number fields ? +

+
+

In this example we define multicheckbox field named {multi_cb} and three number fields {num_a}, {num_b}, {num_c}.

+

Multicheckbox {multi_cb} has three options:

+
    +
  • value: 1, option title: Option A
  • +
  • value: 2, option title: Option B
  • +
  • value: 3, option title: Option C
  • +
+

Each of number fields {num_a}, {num_b}, {num_c} are visible for one of three {multi_cb} options. So, we need to define visibility rules. For example field {num_a} has rule {multi_cb} == 1, which means that this field will be visible if user checked "Option A".

+

Next, we need to go to "Price Add-ons" to set formulas. To check if user has selected certain option we use is_selected() function. This is example how to calculate price based on selected option and number field value:

+

if is_selected( {multi_cb}; 1 ) add {num_a} * 100

+

if is_selected( {multi_cb}; 2 ) add {num_b} * 250

+

if is_selected( {multi_cb}; 3 ) add {num_c} * 500

+ diff --git a/docs/.retype/usermanual/expression-syntax/index.html b/docs/.retype/usermanual/expression-syntax/index.html index afdd442..45ec3b9 100644 --- a/docs/.retype/usermanual/expression-syntax/index.html +++ b/docs/.retype/usermanual/expression-syntax/index.html @@ -3,7 +3,7 @@ - + @@ -11,7 +11,7 @@ Expression Syntax | Product fields and price calculator - + @@ -20,21 +20,21 @@ - + - + - + - + - +
@@ -329,6 +329,22 @@

Math Functions

+
+
+ +
round(x; p)      - round "x" with the precision of "p"
 ceil(x)         - round up to the integer number
diff --git a/docs/.retype/usermanual/fields/index.html b/docs/.retype/usermanual/fields/index.html
index 78152e2..4e8e404 100644
--- a/docs/.retype/usermanual/fields/index.html
+++ b/docs/.retype/usermanual/fields/index.html
@@ -3,7 +3,7 @@
 
     
     
-    
+    
 
     
     
@@ -30,12 +30,12 @@
 
     
 
-    
+    
 
-    
+    
     
-    
-    
+    
+    
 
 
     
diff --git a/docs/.retype/usermanual/import_export/index.html b/docs/.retype/usermanual/import_export/index.html index 6832b15..e5d2ba0 100644 --- a/docs/.retype/usermanual/import_export/index.html +++ b/docs/.retype/usermanual/import_export/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/docs/.retype/usermanual/installation/index.html b/docs/.retype/usermanual/installation/index.html index f9ec18a..1c3575a 100644 --- a/docs/.retype/usermanual/installation/index.html +++ b/docs/.retype/usermanual/installation/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/docs/.retype/usermanual/templates/index.html b/docs/.retype/usermanual/templates/index.html index 5dd51d8..64a9f42 100644 --- a/docs/.retype/usermanual/templates/index.html +++ b/docs/.retype/usermanual/templates/index.html @@ -3,7 +3,7 @@ - + @@ -30,12 +30,12 @@ - + - + - - + +
diff --git a/docs/.retype/usermanual/uninstall/index.html b/docs/.retype/usermanual/uninstall/index.html index 78e4f42..0c21705 100644 --- a/docs/.retype/usermanual/uninstall/index.html +++ b/docs/.retype/usermanual/uninstall/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/docs/.retype/usermanual/usage/index.html b/docs/.retype/usermanual/usage/index.html index fb1374d..f65771c 100644 --- a/docs/.retype/usermanual/usage/index.html +++ b/docs/.retype/usermanual/usage/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/docs/.retype/usermanual/videos/index.html b/docs/.retype/usermanual/videos/index.html index 1abdf38..28d10bc 100644 --- a/docs/.retype/usermanual/videos/index.html +++ b/docs/.retype/usermanual/videos/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
@@ -408,6 +408,32 @@

+

+ +

+ # + 10. Stock Management (Reduction Multiplier) +

+
+

+

+
+ +
+
+

+ +

+ # + 11. Layouts, two-column layout +

+
+

+

+
+ +
+

diff --git a/docs/images/example-multi-checkbox-and-visibility.png b/docs/images/example-multi-checkbox-and-visibility.png new file mode 100644 index 0000000000000000000000000000000000000000..f260f4aa146d078f1518f3347ef19efdeea7b879 GIT binary patch literal 394883 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͗k5Vr42Mk%9_dNm)PR>l* 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�I0T2n-642z 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 GYRVlf}e>|H05s7NINS0i8la^ftq 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%0Dg)-=3 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�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 z%0DfTD3o%Cual(Ns zbfL)f5#J-Q-w93GM)W9T>V5wm7D{I-Qq^NDh2r{3U#PfGhJX!QGdXG$R?7MwH0TNP_v?)A*2twbc^NVUpy&cgCKW zqq{Xpg#OsyOr3{eam0>-%n*V7Rq4^rf0?jKE=sH4Zd*EqEBj`zB)te9;DuV;S-7pG zfh2Z<1ch2^(cT15zr}^v3V`&8yMwyP+xeaF^m&V%dd7#uNIT9dZ~DhzBNCGE3C(|9gKs|?3Vit9@nGEPP#>kb6e;WEOA%0N0rwm{!B{-9_$Sr@RZe`% zwy)Y@tQyLqm=8sat|7c%9ty20Z-4O+4>bF8j_Wzxpa>YOj6g8twP5%2`7*&$-W47k zjrylW;;s1N8<#;bN7ITLLMaZI>G~tq5PSA}3{Rw2{=%j>WbHQEC8wte<6$v3TGf~b z9?Q2&)C4-sl*aBaKE`0dZK1CM5EfUp!YoFt(dQ!GMgd=bTMM#ir)=~rQO4AMG4t*= z&BgjAZkAitN7v_2k>rM!ospg1_KU8IF2Yu=iqwbH-uW73ke01)@Xia+=btKX(Q3t; zdb?h~ShxAJlg$!h87A;7XeW>IdG8is8Ky-&f?90f?lgYYO(O!6ibLylIJ^dw1|#uV zAVv1yIxG8D`=4JORG7YubI$-RGMLe3i(rQ;1u|3*~yE$0SVYIrc7kf%Za&GAy7 zbmPSR^z=8cn;NiwV~mEw{{?aKfRIQDj$qd5JJI!LsCfXADg9a5rCsS;I9Vd zVFlvbIhZU<4YvHnfTATSNxaD?)|k+wk8sgK4~i-0;spx=3m{rgG4jn>UK)Z8f|2X} zdnDsf<&Fp{^vIY?Dnz%>LAFDN!C@6t3 wx?QEmjORsI_^G1UVGk|2lm_Rx(72qt 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 tyX?E$KhyKi^!)pF_*k=~J=@@N~{{s(Zfy4j+ literal 0 HcmV?d00001 diff --git a/docs/usermanual/about.md b/docs/usermanual/about.md index 2da116f..c9416db 100644 --- a/docs/usermanual/about.md +++ b/docs/usermanual/about.md @@ -28,11 +28,11 @@ If you appreciate my work - [Buy me a Coffee](https://www.buymeacoffee.com/piatk **Minimum tested version, but not recommended** - Wordpress v.5.0 -- Woocommerce v.3.5.0 +- Woocommerce v.3.5 **Maximum tested version** -- Wordpress v.6.0.0 -- Woocommerce v.6.6.1 +- Wordpress v.6.0 +- Woocommerce v.6.7 **Recommended version** diff --git a/docs/usermanual/example-expressions.md b/docs/usermanual/example-expressions.md index e85910d..b62be27 100644 --- a/docs/usermanual/example-expressions.md +++ b/docs/usermanual/example-expressions.md @@ -112,3 +112,24 @@ or ``` --- + +### 5. How to use multicheckbox and conditional number fields ? + +In this example we define multicheckbox field named `{multi_cb}` and three number fields `{num_a}, {num_b}, {num_c}`. + +Multicheckbox `{multi_cb}` has three options: +- value: 1, option title: Option A +- value: 2, option title: Option B +- value: 3, option title: Option C + +Each of number fields `{num_a}, {num_b}, {num_c}` are visible for one of three `{multi_cb}` options. So, we need to define visibility rules. For example field `{num_a}` has rule `{multi_cb} == 1`, which means that this field will be visible if user checked "Option A". + +Next, we need to go to "Price Add-ons" to set formulas. To check if user has selected certain option we use `is_selected()` function. This is example how to calculate price based on selected option and number field value: + +`if is_selected( {multi_cb}; 1 )` `add {num_a} * 100` + +`if is_selected( {multi_cb}; 2 )` `add {num_b} * 250` + +`if is_selected( {multi_cb}; 3 )` `add {num_c} * 500` + + \ No newline at end of file diff --git a/docs/usermanual/expression-syntax.md b/docs/usermanual/expression-syntax.md index 39136cf..66d2ae9 100644 --- a/docs/usermanual/expression-syntax.md +++ b/docs/usermanual/expression-syntax.md @@ -53,6 +53,10 @@ or ## Math Functions +!!!warning +Use semicolon `;` to separate arguments in functions +!!! + ``` round(x; p) - round "x" with the precision of "p" ceil(x) - round up to the integer number diff --git a/docs/usermanual/videos.md b/docs/usermanual/videos.md index 893932c..7837dbe 100644 --- a/docs/usermanual/videos.md +++ b/docs/usermanual/videos.md @@ -27,4 +27,8 @@ This plugin is absolutely FREE with PRO features. It will always be free, so ple ### 8. How to set different price for logged/unlogged users ? [!embed](https://youtu.be/MFmxifI4tW4) ### 9. How to use arrays and json objects in Global Parameters ? -[!embed](https://youtu.be/qFA-4TJ6gvs) \ No newline at end of file +[!embed](https://youtu.be/qFA-4TJ6gvs) +### 10. Stock Management (Reduction Multiplier) +[!embed](https://youtu.be/5wCkgBbynCI) +### 11. Layouts, two-column layout +[!embed](https://youtu.be/b2iNp1lHxK0) \ No newline at end of file From d55565cdc8adcf123974f6fb05f6cef68ee8b00e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Fri, 5 Aug 2022 00:15:13 +0200 Subject: [PATCH 2/8] Formula Value Field, Variation support --- assets/css/admin.css | 1 + assets/css/admin.css.map | 2 +- assets/css/admin.min.css | 2 +- assets/css/admin.sass | 1 + assets/css/price.css | 5 -- assets/css/price.min.css | 2 +- assets/css/product.css | 5 ++ assets/css/product.css.map | 2 +- assets/css/product.min.css | 2 +- assets/css/product.sass | 6 ++- assets/js/admin.js | 16 +++++-- assets/js/admin.min.js | 2 +- readme.md | 2 +- src/Fields/AbstractField.php | 3 +- src/Fields/FormulaField.php | 69 +++++++++++++++++++++++++++ src/FieldsetPostType.php | 17 +++++-- src/FieldsetProduct.php | 85 +++++++++++++++++++++++++++++----- src/Woocommerce/Product.php | 69 +++++++++++++++++++++++++-- views/admin/expression.php | 24 +--------- views/admin/inventory.php | 21 +++++++++ views/admin/options.php | 22 +++++++++ views/fields/admin.php | 4 +- views/fields/admin/formula.php | 16 +++++++ views/woocommerce/product.php | 6 +++ wc-kalkulator.php | 9 ++-- 25 files changed, 327 insertions(+), 66 deletions(-) create mode 100644 src/Fields/FormulaField.php create mode 100644 views/admin/inventory.php create mode 100644 views/admin/options.php create mode 100644 views/fields/admin/formula.php diff --git a/assets/css/admin.css b/assets/css/admin.css index e3431d5..3b98312 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -453,6 +453,7 @@ width: 360px; vertical-align: middle; text-align: justify; + z-index: 999999; } #wck-expression-toolbar, #wck-expression-toolbar * { tab-index: 0; diff --git a/assets/css/admin.css.map b/assets/css/admin.css.map index b517a17..a4951da 100644 --- a/assets/css/admin.css.map +++ b/assets/css/admin.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["admin.sass"],"names":[],"mappings":"AAAA;EACE;EACA;;;AAGA;EACE;;AAGA;EACE;;AAIA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEN;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;AAEJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;EACA;;AAGE;EACE;EACA;EACA;;AAEN;EACE;EACA;;AAGE;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAEN;EACE;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;AAEF;AAAA;EAEE;EACA;;AAEF;EACE;EACA;EACA;;AAGA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAIA;EACE;;AAIF;EACE;;AAGJ;EACE;;AAEJ;EACE;;AAIE;EACE;;AAEN;EACE;EACA;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;;AAEA;EACE;;AAEN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;;AAEN;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;;AAGN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;;AAER;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAbA;EACE;;AAcF;EACE;;AAEF;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEA;EACE;;AAEF;EACE;;AAEF;EACE;;AAEJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;;AAEJ;EACE;;AAEA;EACE","file":"admin.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["admin.sass"],"names":[],"mappings":"AAAA;EACE;EACA;;;AAGA;EACE;;AAGA;EACE;;AAIA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEN;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;AAEJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;EACA;;AAGE;EACE;EACA;EACA;;AAEN;EACE;EACA;;AAGE;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAEN;EACE;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;AAEF;AAAA;EAEE;EACA;;AAEF;EACE;EACA;EACA;;AAGA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAIA;EACE;;AAIF;EACE;;AAGJ;EACE;;AAEJ;EACE;;AAIE;EACE;;AAEN;EACE;EACA;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;;AAEA;EACE;;AAEN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;;AAEN;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;;AAGN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;;AAER;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAdA;EACE;;AAeF;EACE;;AAEF;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEA;EACE;;AAEF;EACE;;AAEF;EACE;;AAEJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;;AAEJ;EACE;;AAEA;EACE","file":"admin.css"} \ No newline at end of file diff --git a/assets/css/admin.min.css b/assets/css/admin.min.css index c826173..57e2320 100644 --- a/assets/css/admin.min.css +++ b/assets/css/admin.min.css @@ -1 +1 @@ -::-moz-placeholder,::-webkit-input-placeholder,::placeholder{color:#9b9b9b!important;font-size:12px!important}.wc-kalkulator-wrapper html{scroll-padding-top:100px}.wc-kalkulator-wrapper p.add-buttons{line-height:36px}.wc-kalkulator-wrapper a.button.action-add-image{margin-bottom:20px;margin-top:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper a.button.action-add-attachment{margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list{width:100%}.wc-kalkulator-wrapper ul#f-field-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;padding:22px}.wc-kalkulator-wrapper ul#f-field-list li{box-shadow:0 5px 10px #ccc;margin-bottom:5px}.wc-kalkulator-wrapper ul#f-field-list li.welcome{box-shadow:none;padding:30px;text-align:center;font-size:16px;border:1px dashed #aaa;margin:30px}.wc-kalkulator-wrapper ul#f-field-list li .field{border:1px solid #aaa;background-color:#fff}.wc-kalkulator-wrapper ul#f-field-list li .field .header{background-color:#f5f5f5;padding:8px;cursor:move}.wc-kalkulator-wrapper ul#f-field-list li .field .header .text{font-size:14px;color:#000;padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .header .name{padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .body{padding:20px;border-top:1px solid #aaa}.wc-kalkulator-wrapper ul#f-field-list li .field .body .half{float:left;width:50%;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{float:left;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .last,.wc-kalkulator-wrapper ul#f-field-list li .field .body .second{padding-left:10px;padding-right:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .first{padding-right:10px;padding-left:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{width:33%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .fu-allowed-extensions{margin-top:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body label{font-size:12px;margin-bottom:3px;font-weight:700}.wc-kalkulator-wrapper ul#f-field-list li .field .body label.error{background-color:#e30000;color:#fff;padding:6px;margin:6px 0;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair{display:flex;align-items:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair span.dashicons-no-alt{cursor:pointer;font-size:28px;color:red}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs{margin-top:20px;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .pair:not(:first-child) label{display:none}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs button{margin-right:6px;margin-bottom:6px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer{display:none;margin-top:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer textarea{display:block;width:100%;min-height:200px;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column{float:left}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1{width:40%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-half{width:20%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2{width:40%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2-half{text-align:center;width:20%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-2{width:80%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-3{width:10%;padding-left:20px;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-4{width:10%;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .clear{clear:both}.wc-kalkulator-wrapper .input-group .dashicons,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons{padding:3px;margin-left:2px;margin-right:2px;cursor:pointer;color:#555;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .dashicons.action-drag,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons.action-drag{cursor:move;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .left,.wc-kalkulator-wrapper ul#f-field-list li .field .header .left{float:left}.wc-kalkulator-wrapper .input-group .right,.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{float:right}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]),.wc-kalkulator-wrapper ul#f-field-list li .field .body label{display:block;width:100%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]).inline,.wc-kalkulator-wrapper ul#f-field-list li .field .body label.inline{display:inline-block;margin-right:10px;width:auto;line-height:2;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param.fdp-disallow-past-date,.wc-kalkulator-wrapper ul#f-field-list li .field .body .param[type=checkbox]{margin:10px 15px 14px 3px}.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=number].param,.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=text].param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=number],.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=text]{border:1px solid #aaa;border-radius:0;padding:5px 10px;width:100%;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body select.param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper .clearfix,.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair:after{content:"";display:block;clear:both}.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan,.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan-label{display:none}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li{width:49.4%;display:inline-block;margin:.25%;vertical-align:top}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li.wck-layout-colspan{width:99.25%}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan{display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;margin-top:4px;cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan-label{display:block;line-height:2.2em;font-size:12px;padding-right:6px}.wc-kalkulator-wrapper .pr-20{padding-right:20px}.wc-kalkulator-wrapper .input-icon{position:relative;font-family:monospace;width:100%;margin:10px 0 15px}.wc-kalkulator-wrapper .input-icon i{font-family:monospace;font-size:13px;position:absolute;display:block;top:11px;pointer-events:none;width:50px;text-align:right;font-style:normal;color:#00f}.wc-kalkulator-wrapper .input-icon input{border:1px solid #aaa;border-radius:0;padding:5px 10px 5px 55px;width:100%}.wc-kalkulator-wrapper .input-if i::after{content:"if"}.wc-kalkulator-wrapper .input-equation i::after{content:"price"}.wc-kalkulator-wrapper .input-stock i::after{content:"qty * "}.wc-kalkulator-wrapper #addon-inputs .input-equation i::after{content:"add"}.wc-kalkulator-wrapper .input-else i::after{content:"else"}.wc-kalkulator-wrapper .input-group{padding:8px;background-color:#eee;margin-bottom:5px}.wc-kalkulator-wrapper .ui-autocomplete-loading{background-image:none!important}.wc-kalkulator-wrapper .wc-category-search,.wc-kalkulator-wrapper .wc-enhanced-select,.wc-kalkulator-wrapper .wc-page-search,.wc-kalkulator-wrapper .wc-product-search{width:100%}.wc-kalkulator-wrapper button.add-operator{margin-right:3px}.wc-kalkulator-wrapper span.formula-field{padding-left:6px;cursor:pointer;font-weight:700}.wc-kalkulator-wrapper span.formula-field:hover{text-decoration:underline}.wc-kalkulator-wrapper .wp-media-image-preview{max-width:80px;max-height:80px;cursor:pointer}.wc-kalkulator-wrapper .wp-media-image-preview:hover{transform:scale(1.2);-moz-transform:scale(1.2);-webkit-transform:scale(1.2)}.wc-kalkulator-wrapper select.param{margin-bottom:20px}.wc-kalkulator-wrapper .iris-picker{position:absolute;z-index:9999}.wc-kalkulator-wrapper .fields-section{text-align:center;padding:50px;margin:0 auto;max-width:500px}.wc-kalkulator-wrapper .fields-section button,.wc-kalkulator-wrapper .fields-section select{font-size:16px}.wc-kalkulator-wrapper .fields-section select{width:300px;padding:5px 10px}.wc-kalkulator-wrapper .fields-section button{width:50px;padding:3px 8px}.wc-kalkulator-wrapper .fields-section button span{line-height:2}#wck-toolbar,.wc-kalkulator-wrapper .align-right{text-align:right}.wc-kalkulator-wrapper .wck-toggle-expand,.wc-kalkulator-wrapper .wck-toggle-layout{cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{opacity:0}#wck-cv-builder .builder .and-condition:hover .cv-remove,.wc-kalkulator-wrapper ul#f-field-list li .field:hover .header .right{opacity:1}.wc-kalkulator-wrapper #wck_expression .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;height:60px;margin-bottom:3px}.wc-kalkulator-wrapper #wck_expression .input-group .input-equation,.wc-kalkulator-wrapper #wck_expression .input-group .input-if{float:left;width:46%;margin:0 .5%}.wc-kalkulator-wrapper #wck_expression .input-group .input-buttons{float:left;width:2.5%;padding-top:5px}.wc-kalkulator-wrapper .inventory label{font-size:15px;margin:55px 0 10px;border-top:1px solid #c3c4c7;display:block;border-bottom:1px solid #c3c4c7;padding:10px 0 10px 5px}.wc-kalkulator-wrapper .cv-container{position:relative}.wc-kalkulator-wrapper .cv-container .action-field-visibility{position:absolute;right:5px;top:5px}.wc-kalkulator-wrapper .cv-container .visibility-readable{background-color:#fff}#postbox-container-2.fullscreen{position:fixed;z-index:999999;left:0;top:0;right:0;bottom:0;margin:0;background-color:#fff;overflow-y:scroll}#postbox-container-2.fullscreen #advanced-sortables,#postbox-container-2.fullscreen #normal-sortables{padding:20px}#wck-toolbar{position:fixed;bottom:0;left:0;right:0;z-index:9999999;background:#f5f5f5;border-top:1px solid #aaa;padding:10px 20px;box-shadow:0 0 45px #000}#wck-toolbar .wck-toggle-fullscreen{cursor:pointer}#wck-toolbar ul{margin:0}#wck-toolbar ul li{margin-bottom:0;display:inline-block}#wck-toolbar ul li,#wck-toolbar ul li li>*{vertical-align:middle}#wck-toolbar ul li.space{width:10px}#wck-expression-toolbar{display:none;position:absolute;top:0;border:1px solid #888;border-radius:5px;box-shadow:0 0 50px rgba(0,0,0,.5);padding:10px 20px;background-color:#fff;margin:0;width:360px;vertical-align:middle;text-align:justify;tab-index:0}#wck-expression-toolbar *{tab-index:0}#wck-expression-toolbar .button{margin-bottom:6px}#wck-expression-toolbar select{width:270px}#wck-cv-builder{overflow:none;display:none;border-radius:3px;position:fixed;z-index:99999999;top:150px;left:50%;margin-left:-500px;bottom:150px;width:1000px;background-color:#fff;box-shadow:0 0 200px 100px rgba(0,0,0,.4);flex-direction:column}#wck-cv-builder .template{display:none;visibility:hidden}#wck-cv-builder .builder{flex-basis:100%;margin:20px 40px 0 5px;overflow-y:auto}#wck-cv-builder .builder .or-group{width:100%}#wck-cv-builder .builder .and-condition{display:flex;gap:3px;margin-bottom:3px}#wck-cv-builder .builder .and-condition .validation-error{border-color:red}#wck-cv-builder .builder .and-condition button{margin-bottom:3px}#wck-cv-builder .builder .and-condition .p-value{flex-grow:2}#wck-cv-builder .builder .or-condition{display:flex;flex-direction:row;align-content:stretch;gap:3px;flex-wrap:wrap}#wck-cv-builder .builder .or-condition:not(:first-child)::before{content:"OR";flex-basis:100%;display:block;font-weight:700;padding:10px;margin-left:25px}#wck-cv-builder .builder .and-group{flex-grow:4}#wck-cv-builder .builder .cv-remove{text-decoration:none;opacity:0;padding:5px}#wck-cv-builder .builder .cv-remove span{font-size:14px;line-height:1}#wck-cv-builder .builder .cv-action-and{align-self:end;margin-bottom:3px}#wck-cv-builder .builder .cv-action-or{display:block;margin-top:10px;margin-left:33px}#wck-cv-builder h1{padding:40px 40px 0}#wck-cv-builder p.save{padding:10px 20px 0;text-align:right;border-top:1px solid #ccc}.postbox.closed{border:1px solid #c3c4c7}.postbox.closed .inside{display:block} \ No newline at end of file +::-moz-placeholder,::-webkit-input-placeholder,::placeholder{color:#9b9b9b!important;font-size:12px!important}.wc-kalkulator-wrapper html{scroll-padding-top:100px}.wc-kalkulator-wrapper p.add-buttons{line-height:36px}.wc-kalkulator-wrapper a.button.action-add-image{margin-bottom:20px;margin-top:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper a.button.action-add-attachment{margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list{width:100%}.wc-kalkulator-wrapper ul#f-field-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;padding:22px}.wc-kalkulator-wrapper ul#f-field-list li{box-shadow:0 5px 10px #ccc;margin-bottom:5px}.wc-kalkulator-wrapper ul#f-field-list li.welcome{box-shadow:none;padding:30px;text-align:center;font-size:16px;border:1px dashed #aaa;margin:30px}.wc-kalkulator-wrapper ul#f-field-list li .field{border:1px solid #aaa;background-color:#fff}.wc-kalkulator-wrapper ul#f-field-list li .field .header{background-color:#f5f5f5;padding:8px;cursor:move}.wc-kalkulator-wrapper ul#f-field-list li .field .header .text{font-size:14px;color:#000;padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .header .name{padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .body{padding:20px;border-top:1px solid #aaa}.wc-kalkulator-wrapper ul#f-field-list li .field .body .half{float:left;width:50%;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{float:left;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .last,.wc-kalkulator-wrapper ul#f-field-list li .field .body .second{padding-left:10px;padding-right:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .first{padding-right:10px;padding-left:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{width:33%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .fu-allowed-extensions{margin-top:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body label{font-size:12px;margin-bottom:3px;font-weight:700}.wc-kalkulator-wrapper ul#f-field-list li .field .body label.error{background-color:#e30000;color:#fff;padding:6px;margin:6px 0;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair{display:flex;align-items:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair span.dashicons-no-alt{cursor:pointer;font-size:28px;color:red}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs{margin-top:20px;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .pair:not(:first-child) label{display:none}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs button{margin-right:6px;margin-bottom:6px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer{display:none;margin-top:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer textarea{display:block;width:100%;min-height:200px;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column{float:left}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1{width:40%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-half{width:20%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2{width:40%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2-half{text-align:center;width:20%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-2{width:80%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-3{width:10%;padding-left:20px;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-4{width:10%;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .clear{clear:both}.wc-kalkulator-wrapper .input-group .dashicons,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons{padding:3px;margin-left:2px;margin-right:2px;cursor:pointer;color:#555;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .dashicons.action-drag,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons.action-drag{cursor:move;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .left,.wc-kalkulator-wrapper ul#f-field-list li .field .header .left{float:left}.wc-kalkulator-wrapper .input-group .right,.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{float:right}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]),.wc-kalkulator-wrapper ul#f-field-list li .field .body label{display:block;width:100%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]).inline,.wc-kalkulator-wrapper ul#f-field-list li .field .body label.inline{display:inline-block;margin-right:10px;width:auto;line-height:2;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param.fdp-disallow-past-date,.wc-kalkulator-wrapper ul#f-field-list li .field .body .param[type=checkbox]{margin:10px 15px 14px 3px}.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=number].param,.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=text].param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=number],.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=text]{border:1px solid #aaa;border-radius:0;padding:5px 10px;width:100%;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body select.param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper .clearfix,.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair:after{content:"";display:block;clear:both}.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan,.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan-label{display:none}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li{width:49.4%;display:inline-block;margin:.25%;vertical-align:top}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li.wck-layout-colspan{width:99.25%}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan{display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;margin-top:4px;cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan-label{display:block;line-height:2.2em;font-size:12px;padding-right:6px}.wc-kalkulator-wrapper .pr-20{padding-right:20px}.wc-kalkulator-wrapper .input-icon{position:relative;font-family:monospace;width:100%;margin:10px 0 15px}.wc-kalkulator-wrapper .input-icon i{font-family:monospace;font-size:13px;position:absolute;display:block;top:11px;pointer-events:none;width:50px;text-align:right;font-style:normal;color:#00f}.wc-kalkulator-wrapper .input-icon input{border:1px solid #aaa;border-radius:0;padding:5px 10px 5px 55px;width:100%}.wc-kalkulator-wrapper .input-if i::after{content:"if"}.wc-kalkulator-wrapper .input-equation i::after{content:"price"}.wc-kalkulator-wrapper .input-stock i::after{content:"qty * "}.wc-kalkulator-wrapper #addon-inputs .input-equation i::after{content:"add"}.wc-kalkulator-wrapper .input-else i::after{content:"else"}.wc-kalkulator-wrapper .input-group{padding:8px;background-color:#eee;margin-bottom:5px}.wc-kalkulator-wrapper .ui-autocomplete-loading{background-image:none!important}.wc-kalkulator-wrapper .wc-category-search,.wc-kalkulator-wrapper .wc-enhanced-select,.wc-kalkulator-wrapper .wc-page-search,.wc-kalkulator-wrapper .wc-product-search{width:100%}.wc-kalkulator-wrapper button.add-operator{margin-right:3px}.wc-kalkulator-wrapper span.formula-field{padding-left:6px;cursor:pointer;font-weight:700}.wc-kalkulator-wrapper span.formula-field:hover{text-decoration:underline}.wc-kalkulator-wrapper .wp-media-image-preview{max-width:80px;max-height:80px;cursor:pointer}.wc-kalkulator-wrapper .wp-media-image-preview:hover{transform:scale(1.2);-moz-transform:scale(1.2);-webkit-transform:scale(1.2)}.wc-kalkulator-wrapper select.param{margin-bottom:20px}.wc-kalkulator-wrapper .iris-picker{position:absolute;z-index:9999}.wc-kalkulator-wrapper .fields-section{text-align:center;padding:50px;margin:0 auto;max-width:500px}.wc-kalkulator-wrapper .fields-section button,.wc-kalkulator-wrapper .fields-section select{font-size:16px}.wc-kalkulator-wrapper .fields-section select{width:300px;padding:5px 10px}.wc-kalkulator-wrapper .fields-section button{width:50px;padding:3px 8px}.wc-kalkulator-wrapper .fields-section button span{line-height:2}#wck-toolbar,.wc-kalkulator-wrapper .align-right{text-align:right}.wc-kalkulator-wrapper .wck-toggle-expand,.wc-kalkulator-wrapper .wck-toggle-layout{cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{opacity:0}#wck-cv-builder .builder .and-condition:hover .cv-remove,.wc-kalkulator-wrapper ul#f-field-list li .field:hover .header .right{opacity:1}.wc-kalkulator-wrapper #wck_expression .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;height:60px;margin-bottom:3px}.wc-kalkulator-wrapper #wck_expression .input-group .input-equation,.wc-kalkulator-wrapper #wck_expression .input-group .input-if{float:left;width:46%;margin:0 .5%}.wc-kalkulator-wrapper #wck_expression .input-group .input-buttons{float:left;width:2.5%;padding-top:5px}.wc-kalkulator-wrapper .inventory label{font-size:15px;margin:55px 0 10px;border-top:1px solid #c3c4c7;display:block;border-bottom:1px solid #c3c4c7;padding:10px 0 10px 5px}.wc-kalkulator-wrapper .cv-container{position:relative}.wc-kalkulator-wrapper .cv-container .action-field-visibility{position:absolute;right:5px;top:5px}.wc-kalkulator-wrapper .cv-container .visibility-readable{background-color:#fff}#postbox-container-2.fullscreen{position:fixed;z-index:999999;left:0;top:0;right:0;bottom:0;margin:0;background-color:#fff;overflow-y:scroll}#postbox-container-2.fullscreen #advanced-sortables,#postbox-container-2.fullscreen #normal-sortables{padding:20px}#wck-toolbar{position:fixed;bottom:0;left:0;right:0;z-index:9999999;background:#f5f5f5;border-top:1px solid #aaa;padding:10px 20px;box-shadow:0 0 45px #000}#wck-toolbar .wck-toggle-fullscreen{cursor:pointer}#wck-toolbar ul{margin:0}#wck-toolbar ul li{margin-bottom:0;display:inline-block}#wck-toolbar ul li,#wck-toolbar ul li li>*{vertical-align:middle}#wck-toolbar ul li.space{width:10px}#wck-expression-toolbar{display:none;position:absolute;top:0;border:1px solid #888;border-radius:5px;box-shadow:0 0 50px rgba(0,0,0,.5);padding:10px 20px;background-color:#fff;margin:0;width:360px;vertical-align:middle;text-align:justify;z-index:999999;tab-index:0}#wck-expression-toolbar *{tab-index:0}#wck-expression-toolbar .button{margin-bottom:6px}#wck-expression-toolbar select{width:270px}#wck-cv-builder{overflow:none;display:none;border-radius:3px;position:fixed;z-index:99999999;top:150px;left:50%;margin-left:-500px;bottom:150px;width:1000px;background-color:#fff;box-shadow:0 0 200px 100px rgba(0,0,0,.4);flex-direction:column}#wck-cv-builder .template{display:none;visibility:hidden}#wck-cv-builder .builder{flex-basis:100%;margin:20px 40px 0 5px;overflow-y:auto}#wck-cv-builder .builder .or-group{width:100%}#wck-cv-builder .builder .and-condition{display:flex;gap:3px;margin-bottom:3px}#wck-cv-builder .builder .and-condition .validation-error{border-color:red}#wck-cv-builder .builder .and-condition button{margin-bottom:3px}#wck-cv-builder .builder .and-condition .p-value{flex-grow:2}#wck-cv-builder .builder .or-condition{display:flex;flex-direction:row;align-content:stretch;gap:3px;flex-wrap:wrap}#wck-cv-builder .builder .or-condition:not(:first-child)::before{content:"OR";flex-basis:100%;display:block;font-weight:700;padding:10px;margin-left:25px}#wck-cv-builder .builder .and-group{flex-grow:4}#wck-cv-builder .builder .cv-remove{text-decoration:none;opacity:0;padding:5px}#wck-cv-builder .builder .cv-remove span{font-size:14px;line-height:1}#wck-cv-builder .builder .cv-action-and{align-self:end;margin-bottom:3px}#wck-cv-builder .builder .cv-action-or{display:block;margin-top:10px;margin-left:33px}#wck-cv-builder h1{padding:40px 40px 0}#wck-cv-builder p.save{padding:10px 20px 0;text-align:right;border-top:1px solid #ccc}.postbox.closed{border:1px solid #c3c4c7}.postbox.closed .inside{display:block} \ No newline at end of file diff --git a/assets/css/admin.sass b/assets/css/admin.sass index 56a846c..fae8cec 100644 --- a/assets/css/admin.sass +++ b/assets/css/admin.sass @@ -471,6 +471,7 @@ width: 360px vertical-align: middle text-align: justify + z-index: 999999 .button margin-bottom: 6px diff --git a/assets/css/price.css b/assets/css/price.css index 86aff0b..f342bc7 100644 --- a/assets/css/price.css +++ b/assets/css/price.css @@ -1,8 +1,3 @@ -p.wckalkulator-price { - font-size: 20px; - padding-top: 20px -} - .summary p.price, .summary span.price, .summary .woocommerce-Price-amount, .summary .reset_variations, .woocommerce-variation-price { display: none !important; } \ No newline at end of file diff --git a/assets/css/price.min.css b/assets/css/price.min.css index 135b8e9..86b700f 100644 --- a/assets/css/price.min.css +++ b/assets/css/price.min.css @@ -1 +1 @@ -p.wckalkulator-price{font-size:20px;padding-top:20px}.summary .reset_variations,.summary .woocommerce-Price-amount,.summary p.price,.summary span.price,.woocommerce-variation-price{display:none!important} \ No newline at end of file +.summary .reset_variations,.summary .woocommerce-Price-amount,.summary p.price,.summary span.price,.woocommerce-variation-price{display:none!important} \ No newline at end of file diff --git a/assets/css/product.css b/assets/css/product.css index 4dad89e..b78bc49 100644 --- a/assets/css/product.css +++ b/assets/css/product.css @@ -176,4 +176,9 @@ width: 0; } +p.wckalkulator-price { + font-size: 20px; + padding-top: 20px; +} + /*# sourceMappingURL=product.css.map */ diff --git a/assets/css/product.css.map b/assets/css/product.css.map index 1ba0ce8..c052b40 100644 --- a/assets/css/product.css.map +++ b/assets/css/product.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["product.sass"],"names":[],"mappings":"AAAA;AAGE;EACE;;AACA;EACE;;AACF;EACE;EACA;;AACJ;EACE;;AACA;EACE;EACA;EACA;EACA;;AACF;EACE;;AACA;EACE;;AACN;EACE;;AACA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AACF;EACE;EACA;;AACJ;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;;AACJ;EACE;EACA;;AACF;EACE;;AACJ;EACE;EACA;;AACA;EACE;;AAKF;EACE;EACA;;AACN;EACE;EACA;;;AAGJ;AAEA;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEA;EACE;EACA;EACA;;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA","file":"product.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["product.sass"],"names":[],"mappings":"AAAA;AAGE;EACE;;AACA;EACE;;AACF;EACE;EACA;;AACJ;EACE;;AACA;EACE;EACA;EACA;EACA;;AACF;EACE;;AACA;EACE;;AACN;EACE;;AACA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AACF;EACE;EACA;;AACJ;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;;AACJ;EACE;EACA;;AACF;EACE;;AACJ;EACE;EACA;;AACA;EACE;;AAKF;EACE;EACA;;AACN;EACE;EACA;;;AAGJ;AAEA;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEA;EACE;EACA;EACA;;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA","file":"product.css"} \ No newline at end of file diff --git a/assets/css/product.min.css b/assets/css/product.min.css index d59b2bb..03076c4 100644 --- a/assets/css/product.min.css +++ b/assets/css/product.min.css @@ -1 +1 @@ -.single-product div.product table.variations.wck-layout-two-col td.table-cell,table.variations.wck-layout-two-col td.table-cell{display:table-cell}.single-product div.product table.variations.wck-layout-two-col td.table-cell.col-1,table.variations.wck-layout-two-col td.table-cell.col-1{padding-right:10px}.single-product div.product table.variations.wck-layout-two-col td.table-cell table.wck-inner-table,table.variations.wck-layout-two-col td.table-cell table.wck-inner-table{padding:0;margin:0}.single-product div.product table.variations td.label,table.variations td.label{margin-bottom:10px}.single-product div.product table.variations td.label .wck-field-tip,table.variations td.label .wck-field-tip{width:18px;height:22px;font-size:18px;vertical-align:middle}.single-product div.product table.variations td.label label,table.variations td.label label{font-weight:600}.single-product div.product table.variations td.label label .required-asterisk,table.variations td.label label .required-asterisk{color:red}.single-product div.product table.variations td.value,table.variations td.value{padding-bottom:1em}.single-product div.product table.variations td.value input[type=email],.single-product div.product table.variations td.value input[type=number],.single-product div.product table.variations td.value input[type=text],.single-product div.product table.variations td.value label,.single-product div.product table.variations td.value select,.single-product div.product table.variations td.value textarea,table.variations td.value input[type=email],table.variations td.value input[type=number],table.variations td.value input[type=text],table.variations td.value label,table.variations td.value select,table.variations td.value textarea{display:block;width:100%;max-width:100%!important;cursor:pointer}.single-product div.product table.variations td.value label [type=checkbox],.single-product div.product table.variations td.value label [type=radio],table.variations td.value label [type=checkbox],table.variations td.value label [type=radio]{margin-right:5px}.single-product div.product table.variations td.value label.inline,table.variations td.value label.inline{display:inline!important;width:auto!important}.single-product div.product table.variations td.value .wck-imageselect,table.variations td.value .wck-imageselect{width:auto;cursor:pointer;display:inline-block;margin:0 5px 5px 0;text-align:center}.single-product div.product table.variations td.value .wck-imageselect [type=radio],.wck-colorswatches [type=radio],.wck-imageswatches [type=radio],table.variations td.value .wck-imageselect [type=radio]{position:absolute;opacity:0;width:0;height:0}.single-product div.product table.variations td.value .wck-imageselect [type=radio]:checked+img,.wck-colorswatches [type=radio]:checked+span.colorswatch,.wck-imageswatches [type=radio]:checked+img,table.variations td.value .wck-imageselect [type=radio]:checked+img{outline:2px solid #222}.single-product div.product table.variations td.value .wck-imageselect img,table.variations td.value .wck-imageselect img{max-width:60px;margin:0 auto}.single-product div.product table.variations td.value .wck-imageselect span,table.variations td.value .wck-imageselect span{font-size:13px}.single-product div.product table.variations td.value .wck-range-date-picker,table.variations td.value .wck-range-date-picker{width:49%!important;float:left}.single-product div.product table.variations td.value .wck-range-date-picker.date_from,table.variations td.value .wck-range-date-picker.date_from{margin-right:2%}.single-product div.product table.variations tr.wck-colorswatches td.value label,table.variations tr.wck-colorswatches td.value label{display:inline-block;width:auto}.single-product div.product table.variations .clearfix,table.variations .clearfix{clear:both;content:""}.wck-imageswatches [type=radio]+img{cursor:pointer;display:inline;max-width:60px;margin:0 5px 5px 0}.wck-colorswatches [type=radio]+span.colorswatch{cursor:pointer;display:inline-block;width:40px;height:40px;margin:0 5px 5px 0}.wck-imageswatches .caption{display:none}#tiptip_holder{display:none;z-index:8675309;position:absolute;top:0;left:0}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0} \ No newline at end of file +.single-product div.product table.variations.wck-layout-two-col td.table-cell,table.variations.wck-layout-two-col td.table-cell{display:table-cell}.single-product div.product table.variations.wck-layout-two-col td.table-cell.col-1,table.variations.wck-layout-two-col td.table-cell.col-1{padding-right:10px}.single-product div.product table.variations.wck-layout-two-col td.table-cell table.wck-inner-table,table.variations.wck-layout-two-col td.table-cell table.wck-inner-table{padding:0;margin:0}.single-product div.product table.variations td.label,table.variations td.label{margin-bottom:10px}.single-product div.product table.variations td.label .wck-field-tip,table.variations td.label .wck-field-tip{width:18px;height:22px;font-size:18px;vertical-align:middle}.single-product div.product table.variations td.label label,table.variations td.label label{font-weight:600}.single-product div.product table.variations td.label label .required-asterisk,table.variations td.label label .required-asterisk{color:red}.single-product div.product table.variations td.value,table.variations td.value{padding-bottom:1em}.single-product div.product table.variations td.value input[type=email],.single-product div.product table.variations td.value input[type=number],.single-product div.product table.variations td.value input[type=text],.single-product div.product table.variations td.value label,.single-product div.product table.variations td.value select,.single-product div.product table.variations td.value textarea,table.variations td.value input[type=email],table.variations td.value input[type=number],table.variations td.value input[type=text],table.variations td.value label,table.variations td.value select,table.variations td.value textarea{display:block;width:100%;max-width:100%!important;cursor:pointer}.single-product div.product table.variations td.value label [type=checkbox],.single-product div.product table.variations td.value label [type=radio],table.variations td.value label [type=checkbox],table.variations td.value label [type=radio]{margin-right:5px}.single-product div.product table.variations td.value label.inline,table.variations td.value label.inline{display:inline!important;width:auto!important}.single-product div.product table.variations td.value .wck-imageselect,table.variations td.value .wck-imageselect{width:auto;cursor:pointer;display:inline-block;margin:0 5px 5px 0;text-align:center}.single-product div.product table.variations td.value .wck-imageselect [type=radio],.wck-colorswatches [type=radio],.wck-imageswatches [type=radio],table.variations td.value .wck-imageselect [type=radio]{position:absolute;opacity:0;width:0;height:0}.single-product div.product table.variations td.value .wck-imageselect [type=radio]:checked+img,.wck-colorswatches [type=radio]:checked+span.colorswatch,.wck-imageswatches [type=radio]:checked+img,table.variations td.value .wck-imageselect [type=radio]:checked+img{outline:2px solid #222}.single-product div.product table.variations td.value .wck-imageselect img,table.variations td.value .wck-imageselect img{max-width:60px;margin:0 auto}.single-product div.product table.variations td.value .wck-imageselect span,table.variations td.value .wck-imageselect span{font-size:13px}.single-product div.product table.variations td.value .wck-range-date-picker,table.variations td.value .wck-range-date-picker{width:49%!important;float:left}.single-product div.product table.variations td.value .wck-range-date-picker.date_from,table.variations td.value .wck-range-date-picker.date_from{margin-right:2%}.single-product div.product table.variations tr.wck-colorswatches td.value label,table.variations tr.wck-colorswatches td.value label{display:inline-block;width:auto}.single-product div.product table.variations .clearfix,table.variations .clearfix{clear:both;content:""}.wck-imageswatches [type=radio]+img{cursor:pointer;display:inline;max-width:60px;margin:0 5px 5px 0}.wck-colorswatches [type=radio]+span.colorswatch{cursor:pointer;display:inline-block;width:40px;height:40px;margin:0 5px 5px 0}.wck-imageswatches .caption{display:none}#tiptip_holder{display:none;z-index:8675309;position:absolute;top:0;left:0}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}p.wckalkulator-price{font-size:20px;padding-top:20px} \ No newline at end of file diff --git a/assets/css/product.sass b/assets/css/product.sass index 82f0eb2..6136303 100644 --- a/assets/css/product.sass +++ b/assets/css/product.sass @@ -155,4 +155,8 @@ border-style: solid border-width: 6px height: 0 - width: 0 \ No newline at end of file + width: 0 + +p.wckalkulator-price + font-size: 20px + padding-top: 20px \ No newline at end of file diff --git a/assets/js/admin.js b/assets/js/admin.js index bfc6d5c..aa5fa5d 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -109,7 +109,7 @@ $WK.shouldHideExprToolbar = false; $WK.stateExprToolbar = false; - $("body").on("focusin", "#wck_expression .input-icon input", function (e) { + $("body").on("focusin", "#wck_expression .input-icon input, #wck_inventory .input-icon input, input.expression-editor-enabled", function (e) { $WK.expressionLastFocusedInput = $(this); $WK.shouldHideExprToolbar = false; @@ -129,7 +129,11 @@ $("#wck-expression-toolbar").stop(true, false).fadeIn('fast'); } - }).on("focusout", "#wck_expression input", function (e) { + $("#wck-parameters .total-price").toggle($(this).hasClass("show-total-price")); + if(!$(this).hasClass("show-total-price") && $("#wck-parameters").val() === '{total_price}') { + $("#wck-parameters").val(""); + } + }).on("focusout", "#wck_expression input, #wck_inventory input, input.expression-editor-enabled", function (e) { $WK.shouldHideExprToolbar = !(e.relatedTarget && $("#wck-expression-toolbar").has(e.relatedTarget).length); setTimeout(function () { if ($WK.stateExprToolbar && $WK.shouldHideExprToolbar) { @@ -613,6 +617,10 @@ case 'attachment': field.content = $row.find('.fst-content').val(); break; + case 'formula': + field.content = $row.find('.fst-content').val(); + field.display_on_user_cart = $row.find('.fst-display-on-user-cart').val() === "on"; + break; case 'link': field.content = $row.find('.fst-content').val(); field.target = $row.find('.fst-target').val(); @@ -890,7 +898,7 @@ ext.forEach(function (e) { $("#" + field_id + " .allowed-extensions.ext-" + e).prop("checked", true); }); - } else if (['html', 'paragraph', 'heading', 'hidden', 'link', 'attachment'].indexOf(this.type) >= 0) { + } else if (['html', 'paragraph', 'heading', 'hidden', 'link', 'attachment', 'formula'].indexOf(this.type) >= 0) { $("#" + field_id + " .fst-content").val(this.content); if (this.type === 'heading') { $("#" + field_id + " .fst-level").val(this.level); @@ -901,6 +909,8 @@ //console.log(field_id, attachment.get('url')); $("#" + field_id + " .wp-media-attachment-preview").attr("href", attachment.get('url')).text(attachment.get('url')); }); + } else if (this.type === 'formula') { + $("#" + field_id + " .fst-display-on-user-cart").val(this.display_on_user_cart === "1" ? "on" : "off"); } } }); diff --git a/assets/js/admin.min.js b/assets/js/admin.min.js index 58da3e4..8bbadb7 100644 --- a/assets/js/admin.min.js +++ b/assets/js/admin.min.js @@ -1 +1 @@ -(function($){"use strict";var $WK={};var $CV={};$(document).ready(function($){var suggest=[];var input_key_pressed={};$("#f-field-list").sortable({handle:".header",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$("#extra-inputs, #addon-inputs").sortable({handle:".action-drag",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$('').insertBefore("#wpwrap");$WK.colorpicker=$("input.wck-global-color-picker");$WK.colorpicker.iris();$WK.expressionLastFocusedInput=null;$WK.wpMediaFrame=null;$WK.wpMediaTarget=null;$WK.iconPreloader="data:image/gif;base64,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";$WK.fieldsLayout="one-col";$WK.toggleButton=function(btn,e){e.preventDefault();if(btn.hasClass("woocommerce-input-toggle--disabled")){btn.removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");return true}else{btn.removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");return false}return false};$WK.fullscreenMode=function(state){if(state){$("body").css("overflow","hidden");$("#postbox-container-2").addClass("fullscreen")}else{$("body").css("overflow","auto");$("#postbox-container-2").removeClass("fullscreen")}};$(".wck-toggle-layout").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fieldsLayout=state?"two-col":"one-col";$WK.updateLayout()});$(".wck-toggle-fullscreen").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fullscreenMode(state)});$(".wck-toggle-expand").on("click",function(e){var state=$WK.toggleButton($(this),e);$(".action-toggle.dashicons-arrow-"+(state?"down":"up")+"-alt2").trigger("click")});$("body").on("click",".wck-toggle-colspan",function(e){e.preventDefault();var item=$(this).parent().parent().parent();if($(this).hasClass("woocommerce-input-toggle--disabled")){$(this).removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");item.addClass("wck-layout-colspan");item.find(".f-colspan").val(2)}else{$(this).removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");item.removeClass("wck-layout-colspan");item.find(".f-colspan").val(1)}});$(".action-save-post").on("click",function(e){e.preventDefault();$("#publish").trigger("click");if($("#publish").hasClass("disabled")){$(this).prop("disabled",true).addClass("disabled")}});$("body").on("click",".action-duplicate",function(e){e.preventDefault();var element=$(this).parent().parent().parent();var clonedElement=element.clone();clonedElement.hide();clonedElement.find(".f-title").val("");clonedElement.find(".f-name").val("");clonedElement.insertAfter(element);clonedElement.fadeIn(1500,function(){clonedElement.find(".dashicons-arrow-down-alt2").trigger("click");$(this).find(".f-title").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150);$(this).find(".f-name").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150)})});$WK.shouldHideExprToolbar=false;$WK.stateExprToolbar=false;$("body").on("focusin","#wck_expression .input-icon input",function(e){$WK.expressionLastFocusedInput=$(this);$WK.shouldHideExprToolbar=false;var posA=$(this).offset();var h=$(this).outerHeight();var posB=$("#wck_expression").offset();$("#wck-expression-toolbar").css({top:posA.top-posB.top-h-$("#wck-expression-toolbar").outerHeight()-20,left:posA.left-posB.left});if(!$WK.stateExprToolbar){$WK.stateExprToolbar=true;$WK.saveFields();$("#wck-parameters .first-selected").prop("selected",true);$("#wck-expression-toolbar").stop(true,false).fadeIn("fast")}}).on("focusout","#wck_expression input",function(e){$WK.shouldHideExprToolbar=!(e.relatedTarget&&$("#wck-expression-toolbar").has(e.relatedTarget).length);setTimeout(function(){if($WK.stateExprToolbar&&$WK.shouldHideExprToolbar){$("#wck-expression-toolbar").stop(true,false).fadeOut("fast");$WK.stateExprToolbar=false}},200)}).on("click","#wck-expression-toolbar",function(e){if(e.target!==e.currentTarget&&e.target.tagName!=="OPTION")return;$WK.expressionLastFocusedInput.focus()}).on("click","button.add-field-to-formula, button.add-operator",function(e){e.preventDefault();var $focused=$WK.expressionLastFocusedInput;if(!$focused){$focused=$(".input-icon").find("input:visible").first();$focused.focus()}if($focused&&$focused.length){var value=$(this).hasClass("add-operator")?$(this).val():$("#wck-parameters").val();if(value===null){return}var cursorPos=$focused[0].selectionStart;var x=$focused.val();$focused.val(x.slice(0,cursorPos)+value+($(this).data("ending")||"")+x.slice(cursorPos));$focused.focus();cursorPos+=value.length;$focused[0].setSelectionRange(cursorPos,cursorPos)}}).on("click",".field .pairs .action-add",function(){var $clone=$(this).prev(".pair").clone().insertBefore($(this));$clone.find("input").val("")}).on("click",".field .pairs .action-showimport",function(){$(this).parent().find("div.importer").toggle()}).on("click",".field .pairs .action-import",function(){var $this=$(this);var input=$this.parent().find("textarea").val().trim().split("\n");if(Array.isArray(input)){input.forEach(function(el){var columns=el.trim().split(";");var $last_pair=$this.parent().parent().find(".pair").last();var $clone=$last_pair.clone().insertAfter($last_pair);if(columns.length===2){$clone.find("input.fs-name").val(columns[0]);$clone.find("input.fs-title").val(columns[1])}else if(columns.length===1){$clone.find("input.fs-title").val(columns[0])}})}}).on("click",".field .pairs .action-removeall",function(){if(confirm("Are you sure?")){$(this).parent().find(".pair").slice(1).remove()}}).on("click",".field .pair .action-delete",function(){var $pairs=$(this).closest(".pairs");if($pairs.children(".pair").length>1){if(confirm("Are you sure?")){$(this).closest(".pair").remove()}}else{alert("You cannot remove the last item!")}}).on("click",".field .header .action-delete",function(){if(confirm("Are you sure?")){var $target=$(this).closest("li");$target.fadeOut("slow",function(){$target.remove()})}}).on("click",".field .header .action-toggle",function(){var fieldBody=$(this).closest(".field").find(".body");fieldBody.slideToggle(300);$(this).toggleClass("dashicons-arrow-up-alt2");$(this).toggleClass("dashicons-arrow-down-alt2");if($(this).hasClass("dashicons-arrow-down-alt2")){$(this).parent().find(".name").text((fieldBody.find(".f-title").length?"- "+fieldBody.find(".f-title").val():"")+" {"+fieldBody.find(".f-name").val()+"}")}else{$(this).parent().find(".name").text("")}}).on("click","#add-field-button",function(e){e.preventDefault();var fieldType=$("#select-field").val();var id=$WK.addField(fieldType);$("html, body").animate({scrollTop:$("#"+id).offset().top-50},1e3)}).on("click",".expression_conditional .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#extra-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last condition!")}}).on("click",".expression_addon .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#addon-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last addon!")}}).on("click",".action-add-image",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this image"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();if($WK.wpMediaTarget.prop("tagName")==="A"){$WK.wpMediaTarget.next("img.wp-media-image-preview").attr("src",attachment.url);$WK.wpMediaTarget.next().next("input.wp-media-image-id").attr("value",attachment.id);$WK.wpMediaTarget.hide()}else{$WK.wpMediaTarget.attr("src",attachment.url);$WK.wpMediaTarget.next("input.wp-media-image-id").attr("value",attachment.id)}});$WK.wpMediaFrame.open()}).on("click",".action-add-attachment",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this file"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();$WK.wpMediaTarget.next("input.wp-media-attachment-id").val(attachment.id);$WK.wpMediaTarget.next().next("a.wp-media-attachment-preview").attr("href",attachment.url).text(attachment.url)});$WK.wpMediaFrame.open()}).on("focus",'[data-type="colorswatches"] input.fs-title',function(e){e.preventDefault();var _target=$(this);$WK.colorpicker.iris("show");$(".iris-picker").css({top:_target.offset().top+40,left:_target.offset().left});$WK.colorpicker.iris("option","change",function(event,ui){_target.val(ui.color.toString());var color=ui.color.toRgb();var t=(color.r+color.g+color.b)/2;var textColor=t<200?"#FFFFFF":"#000000";_target.css({"background-color":ui.color.toString(),color:textColor})});$WK.colorpicker.iris("color",$(this).val())}).on("click","input.allowed-extensions",function(){var field_id="#"+$(this).closest("li").attr("id");var ext=[];$(field_id+" input.allowed-extensions:checked").each(function(){ext.push($(this).data("extension"))});$(field_id+" input.fu-allowed-extensions").val(ext.join("|"))}).on("change","input.f-name",function(){var target=$(this);var newName=$(this).val().trim();if(newName!==""){$("#wck_fields_editor input.f-name").each(function(){if($(this).val()===newName&&!$(this).is(target)){alert("The name {"+newName+"} is already in use! Choose another name.");target.val("");return false}})}if($(this)[0].checkValidity()&&typeof $(this).data("lastValid")!=="undefined"){var oldName=$(this).data("lastValid");if(oldName!==newName){var oldNameInUse=false;$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){if($(this).val().includes(oldName)){oldNameInUse=true;return false}});if(oldNameInUse&&confirm("Wait! Seems like {"+oldName+"} is used in formulas! Do you want to replace {"+oldName+"} in all formulas? {"+oldName+"} will be changed to {"+newName+"}")){$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){$(this).val($(this).val().replaceAll("{"+oldName+"}","{"+newName+"}").replaceAll("{"+oldName+":","{"+newName+":").replaceAll('"field":"'+oldName+'"','"field":"'+newName+'"'))});$(this).data("lastValid",newName)}}}}).on("focusin","input.f-name",function(){if($(this)[0].checkValidity()){$(this).data("lastValid",$(this).val())}});$(".iris-square-value").on("click",function(e){e.preventDefault()});$(document).click(function(e){if(!$(e.target).closest('.iris-picker, [data-type="colorswatches"] input.fs-title').length){if($(".iris-picker").is(":visible")){$WK.colorpicker.iris("hide")}}});$("form#post").submit(function(e){$WK.saveFields();if(!$WK.saved){e.preventDefault();return false}$WK.saveExpression();if(!$WK.expr_saved&&$WK.expression.mode!=="off"){e.preventDefault();alert("Expression is required. Fill in required fields and try again!");return false}return true});$WK.init=function(){$WK.fieldList=$("#f-field-list");$WK.html=wck_fields_html;$WK.fields={};$WK.saved=false;$WK.expr_saved=false;$WK.counter=0;$WK.expression={mode:$("input.expression_type:checked").val()};$WK.loadJSONdata();$WK.showExpressionEditor();$WK.changeAssignType();$("form#post").attr("novalidate","");$WK.buildTooltips("");$WK.updateLayout();$("#wck-parameters .first-selected").prop("selected",true)};$WK.updateLayout=function(){if($WK.fieldsLayout==="two-col"){$WK.fieldList.addClass("layout-two-col")}else{$WK.fieldList.removeClass("layout-two-col")}};$WK.buildTooltips=function(selector){$(selector+"span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"})};$WK.changeAssignType=function(){var disabled=$("#assign_type").val()==="1";$("#assign_products, #assign_categories, #assign_tags, #assign_attributes").prop("disabled",disabled);$(".hide-if-disabled").toggle(!disabled)};$("#assign_type").on("change",$WK.changeAssignType);$WK.preloadMedia=function(id,callback){wp.media.attachment(id).fetch().then(function(){callback(wp.media.attachment(id))});return};$WK.addField=function(type){$WK.counter+=1;var id="wkfield-"+$WK.counter;$("li.welcome",$WK.fieldList).remove();$WK.fieldList.append($("
  • ",{"data-type":type,class:"form-invalid",id:id}).append($WK.html[type].replace("{id}",id)));$WK.buildTooltips("#"+id+" ");if($("#"+id).find(".pairs").length>0){$("#"+id+" .pairs").sortable({placeholder:"wck-sortable-placeholder",tolerance:"pointer"})}return id};$(window).on("beforeunload",function(){if($WK.saved===false){return""}});$WK.saveFields=function(){$WK.fields={};suggest=[];var error=$("li .field",$WK.fieldList).length===0;$("label.error").remove();$WK.saved=false;$("#wck-parameters .defined-fields").html("");$WK.appendGlobalParameters();if(error){alert("Please add at least one field before saving.");return false}$("li .field",$WK.fieldList).each(function(){var $row=$(this);var input_fname=$row.find("input.f-name");var input_ftitle=$row.find("input.f-title");var input_fhint=$row.find("input.f-hint");var input_default_value=$row.find("input.f-default-value");var input_css_class=$row.find("input.f-css-class");var field={type:$row.data("type"),use_expression:$row.data("use-expression")===true,name:input_fname.val(),title:input_ftitle.val(),hint:input_fhint.val(),default_value:input_default_value.val(),css_class:input_css_class.val(),required:$row.find("select.f-required").length>0?$row.find("select.f-required").val()==="on":true,layout:$WK.fieldsLayout,colspan:$row.find("input.f-colspan").val(),visibility:$row.find("input.f-visibility").val(),visibility_readable:$row.find("input.f-visibility-readable").val()};var input_fprice=$row.find("input.f-price");if(input_fprice.length>0){field.price=input_fprice.val();if(field.price!==""){field.use_expression=true}}var input_fimgwidth=$row.find("input.fimg-width");if(input_fimgwidth.length>0){field.image_size=input_fimgwidth.val()}var $fs_options;switch(field.type){case"select":case"radio":case"imageselect":case"imageswatches":case"colorswatches":case"radiogroup":case"checkboxgroup":field.options_name=[];field.options_title=[];if(field.type==="imageselect"||field.type==="imageswatches"){field.options_image=[]}if(field.type==="checkboxgroup"){field.select_limit=$row.find("input.fcbg-limit").val()}$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var fs_name=$(this).find("input.fs-name");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_name.val()+":"+fs_title.val()}field.options_name.push(fs_name.val()+":"+fs_title.val());field.options_title.push(fs_title.val());if(field.type==="imageselect"||field.type==="imageswatches"){var fs_image=$(this).find("input.fs-image");field.options_image.push(fs_image.val())}});break;case"dropdown":field.options_title=[];$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_title.val()}field.options_title.push(fs_title.val())});break;case"number":var input_fnmin=$row.find("input.fn-min-value");field.min=input_fnmin.val();var input_fnmax=$row.find("input.fn-max-value");field.max=input_fnmax.val();break;case"checkbox":var input_fcb_default_state=$row.find("select.fcb-default-state");field.default_state=input_fcb_default_state.val()==="on";break;case"text":case"textarea":case"email":var input_ftminlen=$row.find("input.ft-min-length");var input_ftmaxlen=$row.find("input.ft-max-length");var input_ftpattern=$row.find("input.ft-pattern");field.min=input_ftminlen.val();field.max=input_ftmaxlen.val();if(input_ftpattern.length>0){field.pattern=input_ftpattern.val()}break;case"colorpicker":case"datepicker":case"rangedatepicker":var input_fdpdisallow_past_date=$row.find("input.fdp-disallow-past-date");field.disallow_past_date=input_fdpdisallow_past_date.is(":checked");break;case"imageupload":field.max_file_size=$row.find("input.fu-max-file-size").val();field.allowed_extensions=$row.find("input.fu-allowed-extensions").val();break;case"html":case"paragraph":case"hidden":case"attachment":field.content=$row.find(".fst-content").val();break;case"link":field.content=$row.find(".fst-content").val();field.target=$row.find(".fst-target").val();break;case"heading":field.content=$row.find(".fst-content").val();field.level=$row.find(".fst-level").val();break}if(field.name!==""&&field.name in $WK.fields){error=true;alert("Field names must be unique! The '"+field.name+"' name is used more than once.")}if(!error){$WK.appendFormulaVars(field)}});var wkform=$("form#post");if(!wkform[0].checkValidity()){error=true;$("input:invalid").closest(".field").find(".action-toggle.dashicons-arrow-down-alt2").trigger("click");$("input:invalid").each(function(){$('").insertBefore($(this))})}if(error&&$("label.error").length){$("html, body").animate({scrollTop:$("label.error").first().offset().top-160},1e3)}$WK.saveJSONdata();$WK.saved=!error};$WK.appendGlobalParameters=function(){if(typeof wck_global_parameters!==undefined){$("#wck-parameters .global-parameters").html("");$.each(wck_global_parameters,function(name,value){var name="global:"+name;var appendChildren="";suggest.push(name);if(typeof value==="object"){$.each(value,function(k,v){var suffix="['"+k+"']";appendChildren=appendChildren+'"});value=""}else{value=" = "+value}$("#wck-parameters .global-parameters").append('");$("#wck-parameters .global-parameters").append(appendChildren)})}};$WK.appendFormulaVars=function(field){$WK.fields[field.name]=field;if(field.use_expression){if(field.type!=="checkboxgroup"){suggest.push(field.name);$("#wck-parameters .defined-fields").append('")}else{suggest.push(field.name);$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":sum");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":min");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":max");$("#wck-parameters .defined-fields").append('")}if(field.type==="text"||field.type==="textarea"){suggest.push(field.name+":text");$("#wck-parameters .defined-fields").append('")}if(field.type==="rangedatepicker"){suggest.push(field.name+":date_from");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":date_to");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":days");$("#wck-parameters .defined-fields").append('")}else if(field.type==="datepicker"){suggest.push(field.name+":date");$("#wck-parameters .defined-fields").append('")}else if(field.type==="imageupload"){suggest.push(field.name+":size");$("#wck-parameters .defined-fields").append('")}}};$WK.saveJSONdata=function(){if(Object.keys($WK.fields).length>0){$("input[name=_wck_fieldset]").val(JSON.stringify($WK.fields))}};$WK.loadJSONdata=function(){if(typeof wck_load_fieldset==="object"){var layoutLoaded=false;$.each(wck_load_fieldset,function(){if(!layoutLoaded){if(this.hasOwnProperty("layout")&&this.layout==="two-col"){$(".wck-toggle-layout").trigger("click")}layoutLoaded=true}var field_id=$WK.addField(this.type);var $field=$("#"+field_id+" .field");$("#"+field_id+" .f-name").val(this.name);if(this.hasOwnProperty("colspan")){$("#"+field_id+" .f-colspan").val(this.colspan);if(this.colspan==="2"){$("#"+field_id+" .wck-toggle-colspan").trigger("click")}}$("#"+field_id+" .f-title").val(this.title);$("#"+field_id+" .f-hint").val(this.hint);$("#"+field_id+" .f-css-class").val(this.css_class);if($("#"+field_id+" .f-required").length>0){$("#"+field_id+" .f-required").val(this.required==="1"?"on":"off")}if(this.hasOwnProperty("visibility")){$("#"+field_id+" .f-visibility").val(this.visibility);$("#"+field_id+" .f-visibility-readable").val(this.visibility_readable);if(this.visibility_readable!==""){$("#"+field_id+" .visibility-readable").val("Rule preview: "+this.visibility_readable)}}var fprice=$("#"+field_id+" .f-price");if(fprice.length>0){fprice.val(this.price)}var fimgwidth=$("#"+field_id+" .fimg-width");if(fimgwidth.length>0){fimgwidth.val(this.image_size)}var options_title,options_name,options_image,default_value,first,$checked;if(this.type==="dropdown"){options_title=this.options_title;default_value=this.default_value;first=true;$checked=null;$.each(options_title,function(i,option_title){if(first){var $first=$field.find(".fs-option");$first.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(["select","radio","imageselect","radiogroup","checkboxgroup","imageswatches","colorswatches"].indexOf(this.type)>=0){options_name=this.options_name;options_title=this.options_title;default_value=this.default_value;if(this.type==="imageselect"||this.type==="imageswatches"){options_image=this.options_image;wp.media.attachment(options_image).fetch()}if(this.type==="checkboxgroup"){$("#"+field_id+" .fcbg-limit").val(this.select_limit)}first=true;$checked=null;$.each(options_name,function(i,option_name){if(option_name.indexOf(":")>=0){option_name=option_name.slice(0,option_name.indexOf(":"))}if(first){var $first=$field.find(".fs-option");$first.find("input.fs-name").val(option_name);$first.find("input.fs-title").val(options_title[i]);var fs_image=$first.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$first.find("a.action-add-image").hide();$first.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$first.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-name").val(option_name);$clone.find("input.fs-title").val(options_title[i]);fs_image=$clone.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$clone.find("a.action-add-image").hide();$clone.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$clone.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(this.type==="number"){$("#"+field_id+" .fn-min-value").val(this.min);$("#"+field_id+" .fn-max-value").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value)}else if(this.type==="checkbox"){$("#"+field_id+" .fcb-default-state").val(this.default_state==="1"?"on":"off")}else if(this.type==="text"||this.type==="textarea"||this.type==="email"){$("#"+field_id+" .ft-min-length").val(this.min);$("#"+field_id+" .ft-max-length").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value);if(this.type==="text"){$("#"+field_id+" .ft-pattern").val(this.pattern)}}else if(this.type==="colorpicker"||this.type==="datepicker"||this.type==="rangedatepicker"){$("#"+field_id+" .fdp-disallow-past-date").prop("checked",this.disallow_past_date)}else if(this.type==="imageupload"){$("#"+field_id+" .fu-max-file-size").val(this.max_file_size);$("#"+field_id+" .fu-allowed-extensions").val(this.allowed_extensions);var ext=this.allowed_extensions.split("|");ext.forEach(function(e){$("#"+field_id+" .allowed-extensions.ext-"+e).prop("checked",true)})}else if(["html","paragraph","heading","hidden","link","attachment"].indexOf(this.type)>=0){$("#"+field_id+" .fst-content").val(this.content);if(this.type==="heading"){$("#"+field_id+" .fst-level").val(this.level)}else if(this.type==="link"){$("#"+field_id+" .fst-target").val(this.target)}else if(this.type==="attachment"){$WK.preloadMedia(this.content,function(attachment){$("#"+field_id+" .wp-media-attachment-preview").attr("href",attachment.get("url")).text(attachment.get("url"))})}}});$WK.saveFields()}};$WK.showExpressionEditor=function(){$("div.expression_oneline, div.expression_conditional, div.expression_off, div.expression_addon").hide();$("div.expression_"+$WK.expression.mode).show();if($WK.expression.mode==="off"){$(".off-hide").hide()}else{$(".off-hide").show()}};$("input.expression_type").on("change",function(){$WK.expression.mode=$(this).val();$WK.expressionLastFocusedInput=null;$WK.showExpressionEditor()});$WK.addCondition=function(if_value,then_value,addon=false){var $html=$('
    '+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    ');$(".input-if input",$html).val(if_value);$(".input-equation input",$html).val(then_value);if(addon===true){$("div#addon-inputs").append($html)}else{$("div#extra-inputs").append($html)}$WK.autocomplete()};$("button.add-condition").on("click",function(){$WK.addCondition()});$("button.add-addon").on("click",function(){$WK.addCondition("","",true)});$WK.autocomplete=function(){$(".input-icon input").bind("keydown",function(e){if(e.keyCode===16||e.keyCode===219){input_key_pressed[e.keyCode]=true}}).autocomplete({minLength:0,source:function(request,response){if(input_key_pressed[16]===true&&input_key_pressed[219]===true){response(suggest)}},focus:function(){return false},select:function(event,ui){delete input_key_pressed[16];delete input_key_pressed[219];this.value+=ui.item.value+"}";return false}})};$WK.saveExpression=function(){var mode=$WK.expression.mode;$WK.expr_saved=false;if(mode==="oneline"){$WK.expression.expr=$(".expression_oneline input").val();if($WK.expression.expr!==""){$WK.expr_saved=true}}if(mode==="conditional"){var data=[];$(".expression_conditional .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});var input_else=$(".expression_conditional .input-else input").val();data.push({type:"else",if:"true",then:input_else});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="addon"){var data=[];$(".expression_addon .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="off"){$("input[name=_wck_expression]").val("off")}else{$("input[name=_wck_expression]").val(JSON.stringify($WK.expression))}};$WK.loadExpression=function(){if(typeof wck_load_expression==="object"){$WK.expression.mode=wck_load_expression.mode;$WK.expression.expr=wck_load_expression.expr;if($WK.expression.mode==="oneline"){$(".expression_oneline input").val($WK.expression.expr);$("input[name=_wck_choose_expression_type].expression_oneline").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}else if($WK.expression.mode==="conditional"){$.each($WK.expression.expr,function(){if(this.type==="condition"){$WK.addCondition(this.if,this.then)}else if(this.type==="else"){$(".input-else input").val(this.then)}});$("input[name=_wck_choose_expression_type].expression_conditional").prop("checked",true);$WK.showExpressionEditor()}else if($WK.expression.mode==="addon"){$.each($WK.expression.expr,function(){$WK.addCondition(this.if,this.then,true)});$("input[name=_wck_choose_expression_type].expression_addon").prop("checked",true);$WK.showExpressionEditor()}}else{$WK.expression.mode="off";$("input[name=_wck_choose_expression_type].expression_off").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}};$("button.test-expression").on("click",function(){$WK.saveExpression()});$WK.toolbarOnTop=false;$(window).scroll(function(){if($(this).scrollTop()>100){if(!$WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=true;$("#wck-toolbar").css({top:"0px",bottom:"auto"}).fadeIn()})}}else if(!$("#postbox-container-2").hasClass("fullscreen")){if($WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=false;$("#wck-toolbar").css({top:"auto",bottom:"0px"}).fadeIn()})}}});$CV.window=$("#wck-cv-builder");$CV.builder=$CV.window.find(".builder");$CV.template=$CV.window.find(".template").children();$CV.context=null;$CV.open=function(context){$CV.context=context;var fieldSelect=$CV.template.find("select.p-field");fieldSelect.empty();$WK.saveFields();fieldSelect.append('');$.each($WK.fieldList.find(".field"),function(){if($(this).data("group")!=="static"&&!$(this).is(context)){var name=$(this).find(".f-name").val();fieldSelect.append('")}});$CV.builder.append($CV.template.clone());$CV.builder.find(".or-condition").remove();var loadData=$CV.context.find(".f-visibility").val();try{loadData=JSON.parse(loadData)}catch(e){loadData=false}if(typeof loadData==="object"){$.each(loadData,function(i,or_condition){var first=true;$.each(or_condition,function(j,and_condition){$CV.add(first?"or":"and",null,and_condition);first=false})})}else{$CV.add("or",null,null)}$CV.window.find("span.self-name").text(context.find(".f-name").val());$CV.window.show().css({display:"flex"})};$CV.close=function(){$CV.window.hide();$CV.builder.empty()};$CV.add=function(type,destination,values){if(destination===null){destination=$CV.builder.find("."+type+"-group").last()}destination.append($CV.window.find(".template ."+type+"-condition").clone());var newCondition=destination.find(".and-condition").last();if(values!==null&&typeof values==="object"){newCondition.find(".p-field").val(values.field);newCondition.find(".p-comparison").val(values.comp).trigger("change");newCondition.find(".p-value").val(values.value)}else{newCondition.find(".p-value").val("")}};$CV.validate=function(){var isValid=true;var conditions=$CV.builder.find(".and-condition");conditions.find(".validation-error").removeClass("validation-error");conditions.each(function(){var field=$(this).find(".p-field");var comp=$(this).find(".p-comparison").val();var value=$(this).find(".p-value");if([null,""].includes(field.val())){field.addClass("validation-error");isValid=false}if(!value.prop("disabled")&&value.val()===""){value.addClass("validation-error");isValid=false}if(["5","6","7","8"].includes(comp)&&!value.val().match(/^-?\d*[\.,]?\d+$/)){value.addClass("validation-error");isValid=false}if(comp==="9"&&value.val()===""){value.addClass("validation-error");isValid=false}});return isValid};$CV.window.on("click",".cv-action-and",function(e){e.preventDefault();$CV.add("and",$(this).prev(),null)});$CV.window.on("click",".cv-action-or",function(e){e.preventDefault();$CV.add("or",$(this).prev(),null)});$CV.window.on("click",".cv-remove",function(e){e.preventDefault();var count=$(this).closest(".and-group").children().length;if(count===1){$(this).closest(".or-condition").remove()}else{$(this).parent().remove()}});$CV.window.on("change","select.p-comparison",function(e){var disabled=["1","2"].includes($(this).val());var pVal=$(this).next(".p-value");pVal.prop("disabled",disabled);if(disabled){pVal.val("")}});$CV.window.on("click",".cv-close",function(e){e.preventDefault();$CV.close()});$CV.window.on("click",".cv-save",function(e){e.preventDefault();if(!$CV.validate()){alert("Please correct the form!");return false}var or_conditions=[];var or_readable=[];$.each($CV.builder.find(".or-condition"),function(){var and_conditions=[];var and_readable=[];$.each($(this).find(".and-condition"),function(){var item={field:$(this).find(".p-field").val(),comp:$(this).find(".p-comparison").val(),comp_text:$(this).find(".p-comparison option:selected").text(),value:$(this).find(".p-value").val()};and_conditions.push(item);and_readable.push("{"+item.field+"} "+item.comp_text+" "+item.value)});or_conditions.push(and_conditions);or_readable.push(" ( "+and_readable.join(" and ")+" ) ")});var readable=or_readable.join(" or ").replaceAll(" "," ");$CV.context.find(".f-visibility").val(or_conditions.length===0?"":JSON.stringify(or_conditions));$CV.context.find(".f-visibility-readable").val(readable);if(readable!==""){$CV.context.find(".visibility-readable").val("Rule preview: "+readable)}else{$CV.context.find(".visibility-readable").val("")}$CV.close()});$("body").on("click",".action-field-visibility",function(){var context=$(this).closest(".field");$CV.open(context)});$WK.init();$WK.loadExpression();$WK.autocomplete()})})(jQuery); \ No newline at end of file +(function($){"use strict";var $WK={};var $CV={};$(document).ready(function($){var suggest=[];var input_key_pressed={};$("#f-field-list").sortable({handle:".header",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$("#extra-inputs, #addon-inputs").sortable({handle:".action-drag",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$('').insertBefore("#wpwrap");$WK.colorpicker=$("input.wck-global-color-picker");$WK.colorpicker.iris();$WK.expressionLastFocusedInput=null;$WK.wpMediaFrame=null;$WK.wpMediaTarget=null;$WK.iconPreloader="data:image/gif;base64,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";$WK.fieldsLayout="one-col";$WK.toggleButton=function(btn,e){e.preventDefault();if(btn.hasClass("woocommerce-input-toggle--disabled")){btn.removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");return true}else{btn.removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");return false}return false};$WK.fullscreenMode=function(state){if(state){$("body").css("overflow","hidden");$("#postbox-container-2").addClass("fullscreen")}else{$("body").css("overflow","auto");$("#postbox-container-2").removeClass("fullscreen")}};$(".wck-toggle-layout").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fieldsLayout=state?"two-col":"one-col";$WK.updateLayout()});$(".wck-toggle-fullscreen").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fullscreenMode(state)});$(".wck-toggle-expand").on("click",function(e){var state=$WK.toggleButton($(this),e);$(".action-toggle.dashicons-arrow-"+(state?"down":"up")+"-alt2").trigger("click")});$("body").on("click",".wck-toggle-colspan",function(e){e.preventDefault();var item=$(this).parent().parent().parent();if($(this).hasClass("woocommerce-input-toggle--disabled")){$(this).removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");item.addClass("wck-layout-colspan");item.find(".f-colspan").val(2)}else{$(this).removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");item.removeClass("wck-layout-colspan");item.find(".f-colspan").val(1)}});$(".action-save-post").on("click",function(e){e.preventDefault();$("#publish").trigger("click");if($("#publish").hasClass("disabled")){$(this).prop("disabled",true).addClass("disabled")}});$("body").on("click",".action-duplicate",function(e){e.preventDefault();var element=$(this).parent().parent().parent();var clonedElement=element.clone();clonedElement.hide();clonedElement.find(".f-title").val("");clonedElement.find(".f-name").val("");clonedElement.insertAfter(element);clonedElement.fadeIn(1500,function(){clonedElement.find(".dashicons-arrow-down-alt2").trigger("click");$(this).find(".f-title").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150);$(this).find(".f-name").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150)})});$WK.shouldHideExprToolbar=false;$WK.stateExprToolbar=false;$("body").on("focusin","#wck_expression .input-icon input, #wck_inventory .input-icon input, input.expression-editor-enabled",function(e){$WK.expressionLastFocusedInput=$(this);$WK.shouldHideExprToolbar=false;var posA=$(this).offset();var h=$(this).outerHeight();var posB=$("#wck_expression").offset();$("#wck-expression-toolbar").css({top:posA.top-posB.top-h-$("#wck-expression-toolbar").outerHeight()-20,left:posA.left-posB.left});if(!$WK.stateExprToolbar){$WK.stateExprToolbar=true;$WK.saveFields();$("#wck-parameters .first-selected").prop("selected",true);$("#wck-expression-toolbar").stop(true,false).fadeIn("fast")}$("#wck-parameters .total-price").toggle($(this).hasClass("show-total-price"));if(!$(this).hasClass("show-total-price")&&$("#wck-parameters").val()==="{total_price}"){$("#wck-parameters").val("")}}).on("focusout","#wck_expression input, #wck_inventory input, input.expression-editor-enabled",function(e){$WK.shouldHideExprToolbar=!(e.relatedTarget&&$("#wck-expression-toolbar").has(e.relatedTarget).length);setTimeout(function(){if($WK.stateExprToolbar&&$WK.shouldHideExprToolbar){$("#wck-expression-toolbar").stop(true,false).fadeOut("fast");$WK.stateExprToolbar=false}},200)}).on("click","#wck-expression-toolbar",function(e){if(e.target!==e.currentTarget&&e.target.tagName!=="OPTION")return;$WK.expressionLastFocusedInput.focus()}).on("click","button.add-field-to-formula, button.add-operator",function(e){e.preventDefault();var $focused=$WK.expressionLastFocusedInput;if(!$focused){$focused=$(".input-icon").find("input:visible").first();$focused.focus()}if($focused&&$focused.length){var value=$(this).hasClass("add-operator")?$(this).val():$("#wck-parameters").val();if(value===null){return}var cursorPos=$focused[0].selectionStart;var x=$focused.val();$focused.val(x.slice(0,cursorPos)+value+($(this).data("ending")||"")+x.slice(cursorPos));$focused.focus();cursorPos+=value.length;$focused[0].setSelectionRange(cursorPos,cursorPos)}}).on("click",".field .pairs .action-add",function(){var $clone=$(this).prev(".pair").clone().insertBefore($(this));$clone.find("input").val("")}).on("click",".field .pairs .action-showimport",function(){$(this).parent().find("div.importer").toggle()}).on("click",".field .pairs .action-import",function(){var $this=$(this);var input=$this.parent().find("textarea").val().trim().split("\n");if(Array.isArray(input)){input.forEach(function(el){var columns=el.trim().split(";");var $last_pair=$this.parent().parent().find(".pair").last();var $clone=$last_pair.clone().insertAfter($last_pair);if(columns.length===2){$clone.find("input.fs-name").val(columns[0]);$clone.find("input.fs-title").val(columns[1])}else if(columns.length===1){$clone.find("input.fs-title").val(columns[0])}})}}).on("click",".field .pairs .action-removeall",function(){if(confirm("Are you sure?")){$(this).parent().find(".pair").slice(1).remove()}}).on("click",".field .pair .action-delete",function(){var $pairs=$(this).closest(".pairs");if($pairs.children(".pair").length>1){if(confirm("Are you sure?")){$(this).closest(".pair").remove()}}else{alert("You cannot remove the last item!")}}).on("click",".field .header .action-delete",function(){if(confirm("Are you sure?")){var $target=$(this).closest("li");$target.fadeOut("slow",function(){$target.remove()})}}).on("click",".field .header .action-toggle",function(){var fieldBody=$(this).closest(".field").find(".body");fieldBody.slideToggle(300);$(this).toggleClass("dashicons-arrow-up-alt2");$(this).toggleClass("dashicons-arrow-down-alt2");if($(this).hasClass("dashicons-arrow-down-alt2")){$(this).parent().find(".name").text((fieldBody.find(".f-title").length?"- "+fieldBody.find(".f-title").val():"")+" {"+fieldBody.find(".f-name").val()+"}")}else{$(this).parent().find(".name").text("")}}).on("click","#add-field-button",function(e){e.preventDefault();var fieldType=$("#select-field").val();var id=$WK.addField(fieldType);$("html, body").animate({scrollTop:$("#"+id).offset().top-50},1e3)}).on("click",".expression_conditional .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#extra-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last condition!")}}).on("click",".expression_addon .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#addon-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last addon!")}}).on("click",".action-add-image",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this image"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();if($WK.wpMediaTarget.prop("tagName")==="A"){$WK.wpMediaTarget.next("img.wp-media-image-preview").attr("src",attachment.url);$WK.wpMediaTarget.next().next("input.wp-media-image-id").attr("value",attachment.id);$WK.wpMediaTarget.hide()}else{$WK.wpMediaTarget.attr("src",attachment.url);$WK.wpMediaTarget.next("input.wp-media-image-id").attr("value",attachment.id)}});$WK.wpMediaFrame.open()}).on("click",".action-add-attachment",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this file"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();$WK.wpMediaTarget.next("input.wp-media-attachment-id").val(attachment.id);$WK.wpMediaTarget.next().next("a.wp-media-attachment-preview").attr("href",attachment.url).text(attachment.url)});$WK.wpMediaFrame.open()}).on("focus",'[data-type="colorswatches"] input.fs-title',function(e){e.preventDefault();var _target=$(this);$WK.colorpicker.iris("show");$(".iris-picker").css({top:_target.offset().top+40,left:_target.offset().left});$WK.colorpicker.iris("option","change",function(event,ui){_target.val(ui.color.toString());var color=ui.color.toRgb();var t=(color.r+color.g+color.b)/2;var textColor=t<200?"#FFFFFF":"#000000";_target.css({"background-color":ui.color.toString(),color:textColor})});$WK.colorpicker.iris("color",$(this).val())}).on("click","input.allowed-extensions",function(){var field_id="#"+$(this).closest("li").attr("id");var ext=[];$(field_id+" input.allowed-extensions:checked").each(function(){ext.push($(this).data("extension"))});$(field_id+" input.fu-allowed-extensions").val(ext.join("|"))}).on("change","input.f-name",function(){var target=$(this);var newName=$(this).val().trim();if(newName!==""){$("#wck_fields_editor input.f-name").each(function(){if($(this).val()===newName&&!$(this).is(target)){alert("The name {"+newName+"} is already in use! Choose another name.");target.val("");return false}})}if($(this)[0].checkValidity()&&typeof $(this).data("lastValid")!=="undefined"){var oldName=$(this).data("lastValid");if(oldName!==newName){var oldNameInUse=false;$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){if($(this).val().includes(oldName)){oldNameInUse=true;return false}});if(oldNameInUse&&confirm("Wait! Seems like {"+oldName+"} is used in formulas! Do you want to replace {"+oldName+"} in all formulas? {"+oldName+"} will be changed to {"+newName+"}")){$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){$(this).val($(this).val().replaceAll("{"+oldName+"}","{"+newName+"}").replaceAll("{"+oldName+":","{"+newName+":").replaceAll('"field":"'+oldName+'"','"field":"'+newName+'"'))});$(this).data("lastValid",newName)}}}}).on("focusin","input.f-name",function(){if($(this)[0].checkValidity()){$(this).data("lastValid",$(this).val())}});$(".iris-square-value").on("click",function(e){e.preventDefault()});$(document).click(function(e){if(!$(e.target).closest('.iris-picker, [data-type="colorswatches"] input.fs-title').length){if($(".iris-picker").is(":visible")){$WK.colorpicker.iris("hide")}}});$("form#post").submit(function(e){$WK.saveFields();if(!$WK.saved){e.preventDefault();return false}$WK.saveExpression();if(!$WK.expr_saved&&$WK.expression.mode!=="off"){e.preventDefault();alert("Expression is required. Fill in required fields and try again!");return false}return true});$WK.init=function(){$WK.fieldList=$("#f-field-list");$WK.html=wck_fields_html;$WK.fields={};$WK.saved=false;$WK.expr_saved=false;$WK.counter=0;$WK.expression={mode:$("input.expression_type:checked").val()};$WK.loadJSONdata();$WK.showExpressionEditor();$WK.changeAssignType();$("form#post").attr("novalidate","");$WK.buildTooltips("");$WK.updateLayout();$("#wck-parameters .first-selected").prop("selected",true)};$WK.updateLayout=function(){if($WK.fieldsLayout==="two-col"){$WK.fieldList.addClass("layout-two-col")}else{$WK.fieldList.removeClass("layout-two-col")}};$WK.buildTooltips=function(selector){$(selector+"span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"})};$WK.changeAssignType=function(){var disabled=$("#assign_type").val()==="1";$("#assign_products, #assign_categories, #assign_tags, #assign_attributes").prop("disabled",disabled);$(".hide-if-disabled").toggle(!disabled)};$("#assign_type").on("change",$WK.changeAssignType);$WK.preloadMedia=function(id,callback){wp.media.attachment(id).fetch().then(function(){callback(wp.media.attachment(id))});return};$WK.addField=function(type){$WK.counter+=1;var id="wkfield-"+$WK.counter;$("li.welcome",$WK.fieldList).remove();$WK.fieldList.append($("
  • ",{"data-type":type,class:"form-invalid",id:id}).append($WK.html[type].replace("{id}",id)));$WK.buildTooltips("#"+id+" ");if($("#"+id).find(".pairs").length>0){$("#"+id+" .pairs").sortable({placeholder:"wck-sortable-placeholder",tolerance:"pointer"})}return id};$(window).on("beforeunload",function(){if($WK.saved===false){return""}});$WK.saveFields=function(){$WK.fields={};suggest=[];var error=$("li .field",$WK.fieldList).length===0;$("label.error").remove();$WK.saved=false;$("#wck-parameters .defined-fields").html("");$WK.appendGlobalParameters();if(error){alert("Please add at least one field before saving.");return false}$("li .field",$WK.fieldList).each(function(){var $row=$(this);var input_fname=$row.find("input.f-name");var input_ftitle=$row.find("input.f-title");var input_fhint=$row.find("input.f-hint");var input_default_value=$row.find("input.f-default-value");var input_css_class=$row.find("input.f-css-class");var field={type:$row.data("type"),use_expression:$row.data("use-expression")===true,name:input_fname.val(),title:input_ftitle.val(),hint:input_fhint.val(),default_value:input_default_value.val(),css_class:input_css_class.val(),required:$row.find("select.f-required").length>0?$row.find("select.f-required").val()==="on":true,layout:$WK.fieldsLayout,colspan:$row.find("input.f-colspan").val(),visibility:$row.find("input.f-visibility").val(),visibility_readable:$row.find("input.f-visibility-readable").val()};var input_fprice=$row.find("input.f-price");if(input_fprice.length>0){field.price=input_fprice.val();if(field.price!==""){field.use_expression=true}}var input_fimgwidth=$row.find("input.fimg-width");if(input_fimgwidth.length>0){field.image_size=input_fimgwidth.val()}var $fs_options;switch(field.type){case"select":case"radio":case"imageselect":case"imageswatches":case"colorswatches":case"radiogroup":case"checkboxgroup":field.options_name=[];field.options_title=[];if(field.type==="imageselect"||field.type==="imageswatches"){field.options_image=[]}if(field.type==="checkboxgroup"){field.select_limit=$row.find("input.fcbg-limit").val()}$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var fs_name=$(this).find("input.fs-name");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_name.val()+":"+fs_title.val()}field.options_name.push(fs_name.val()+":"+fs_title.val());field.options_title.push(fs_title.val());if(field.type==="imageselect"||field.type==="imageswatches"){var fs_image=$(this).find("input.fs-image");field.options_image.push(fs_image.val())}});break;case"dropdown":field.options_title=[];$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_title.val()}field.options_title.push(fs_title.val())});break;case"number":var input_fnmin=$row.find("input.fn-min-value");field.min=input_fnmin.val();var input_fnmax=$row.find("input.fn-max-value");field.max=input_fnmax.val();break;case"checkbox":var input_fcb_default_state=$row.find("select.fcb-default-state");field.default_state=input_fcb_default_state.val()==="on";break;case"text":case"textarea":case"email":var input_ftminlen=$row.find("input.ft-min-length");var input_ftmaxlen=$row.find("input.ft-max-length");var input_ftpattern=$row.find("input.ft-pattern");field.min=input_ftminlen.val();field.max=input_ftmaxlen.val();if(input_ftpattern.length>0){field.pattern=input_ftpattern.val()}break;case"colorpicker":case"datepicker":case"rangedatepicker":var input_fdpdisallow_past_date=$row.find("input.fdp-disallow-past-date");field.disallow_past_date=input_fdpdisallow_past_date.is(":checked");break;case"imageupload":field.max_file_size=$row.find("input.fu-max-file-size").val();field.allowed_extensions=$row.find("input.fu-allowed-extensions").val();break;case"html":case"paragraph":case"hidden":case"attachment":field.content=$row.find(".fst-content").val();break;case"formula":field.content=$row.find(".fst-content").val();field.display_on_user_cart=$row.find(".fst-display-on-user-cart").val()==="on";break;case"link":field.content=$row.find(".fst-content").val();field.target=$row.find(".fst-target").val();break;case"heading":field.content=$row.find(".fst-content").val();field.level=$row.find(".fst-level").val();break}if(field.name!==""&&field.name in $WK.fields){error=true;alert("Field names must be unique! The '"+field.name+"' name is used more than once.")}if(!error){$WK.appendFormulaVars(field)}});var wkform=$("form#post");if(!wkform[0].checkValidity()){error=true;$("input:invalid").closest(".field").find(".action-toggle.dashicons-arrow-down-alt2").trigger("click");$("input:invalid").each(function(){$('").insertBefore($(this))})}if(error&&$("label.error").length){$("html, body").animate({scrollTop:$("label.error").first().offset().top-160},1e3)}$WK.saveJSONdata();$WK.saved=!error};$WK.appendGlobalParameters=function(){if(typeof wck_global_parameters!==undefined){$("#wck-parameters .global-parameters").html("");$.each(wck_global_parameters,function(name,value){var name="global:"+name;var appendChildren="";suggest.push(name);if(typeof value==="object"){$.each(value,function(k,v){var suffix="['"+k+"']";appendChildren=appendChildren+'"});value=""}else{value=" = "+value}$("#wck-parameters .global-parameters").append('");$("#wck-parameters .global-parameters").append(appendChildren)})}};$WK.appendFormulaVars=function(field){$WK.fields[field.name]=field;if(field.use_expression){if(field.type!=="checkboxgroup"){suggest.push(field.name);$("#wck-parameters .defined-fields").append('")}else{suggest.push(field.name);$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":sum");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":min");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":max");$("#wck-parameters .defined-fields").append('")}if(field.type==="text"||field.type==="textarea"){suggest.push(field.name+":text");$("#wck-parameters .defined-fields").append('")}if(field.type==="rangedatepicker"){suggest.push(field.name+":date_from");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":date_to");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":days");$("#wck-parameters .defined-fields").append('")}else if(field.type==="datepicker"){suggest.push(field.name+":date");$("#wck-parameters .defined-fields").append('")}else if(field.type==="imageupload"){suggest.push(field.name+":size");$("#wck-parameters .defined-fields").append('")}}};$WK.saveJSONdata=function(){if(Object.keys($WK.fields).length>0){$("input[name=_wck_fieldset]").val(JSON.stringify($WK.fields))}};$WK.loadJSONdata=function(){if(typeof wck_load_fieldset==="object"){var layoutLoaded=false;$.each(wck_load_fieldset,function(){if(!layoutLoaded){if(this.hasOwnProperty("layout")&&this.layout==="two-col"){$(".wck-toggle-layout").trigger("click")}layoutLoaded=true}var field_id=$WK.addField(this.type);var $field=$("#"+field_id+" .field");$("#"+field_id+" .f-name").val(this.name);if(this.hasOwnProperty("colspan")){$("#"+field_id+" .f-colspan").val(this.colspan);if(this.colspan==="2"){$("#"+field_id+" .wck-toggle-colspan").trigger("click")}}$("#"+field_id+" .f-title").val(this.title);$("#"+field_id+" .f-hint").val(this.hint);$("#"+field_id+" .f-css-class").val(this.css_class);if($("#"+field_id+" .f-required").length>0){$("#"+field_id+" .f-required").val(this.required==="1"?"on":"off")}if(this.hasOwnProperty("visibility")){$("#"+field_id+" .f-visibility").val(this.visibility);$("#"+field_id+" .f-visibility-readable").val(this.visibility_readable);if(this.visibility_readable!==""){$("#"+field_id+" .visibility-readable").val("Rule preview: "+this.visibility_readable)}}var fprice=$("#"+field_id+" .f-price");if(fprice.length>0){fprice.val(this.price)}var fimgwidth=$("#"+field_id+" .fimg-width");if(fimgwidth.length>0){fimgwidth.val(this.image_size)}var options_title,options_name,options_image,default_value,first,$checked;if(this.type==="dropdown"){options_title=this.options_title;default_value=this.default_value;first=true;$checked=null;$.each(options_title,function(i,option_title){if(first){var $first=$field.find(".fs-option");$first.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(["select","radio","imageselect","radiogroup","checkboxgroup","imageswatches","colorswatches"].indexOf(this.type)>=0){options_name=this.options_name;options_title=this.options_title;default_value=this.default_value;if(this.type==="imageselect"||this.type==="imageswatches"){options_image=this.options_image;wp.media.attachment(options_image).fetch()}if(this.type==="checkboxgroup"){$("#"+field_id+" .fcbg-limit").val(this.select_limit)}first=true;$checked=null;$.each(options_name,function(i,option_name){if(option_name.indexOf(":")>=0){option_name=option_name.slice(0,option_name.indexOf(":"))}if(first){var $first=$field.find(".fs-option");$first.find("input.fs-name").val(option_name);$first.find("input.fs-title").val(options_title[i]);var fs_image=$first.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$first.find("a.action-add-image").hide();$first.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$first.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-name").val(option_name);$clone.find("input.fs-title").val(options_title[i]);fs_image=$clone.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$clone.find("a.action-add-image").hide();$clone.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$clone.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(this.type==="number"){$("#"+field_id+" .fn-min-value").val(this.min);$("#"+field_id+" .fn-max-value").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value)}else if(this.type==="checkbox"){$("#"+field_id+" .fcb-default-state").val(this.default_state==="1"?"on":"off")}else if(this.type==="text"||this.type==="textarea"||this.type==="email"){$("#"+field_id+" .ft-min-length").val(this.min);$("#"+field_id+" .ft-max-length").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value);if(this.type==="text"){$("#"+field_id+" .ft-pattern").val(this.pattern)}}else if(this.type==="colorpicker"||this.type==="datepicker"||this.type==="rangedatepicker"){$("#"+field_id+" .fdp-disallow-past-date").prop("checked",this.disallow_past_date)}else if(this.type==="imageupload"){$("#"+field_id+" .fu-max-file-size").val(this.max_file_size);$("#"+field_id+" .fu-allowed-extensions").val(this.allowed_extensions);var ext=this.allowed_extensions.split("|");ext.forEach(function(e){$("#"+field_id+" .allowed-extensions.ext-"+e).prop("checked",true)})}else if(["html","paragraph","heading","hidden","link","attachment","formula"].indexOf(this.type)>=0){$("#"+field_id+" .fst-content").val(this.content);if(this.type==="heading"){$("#"+field_id+" .fst-level").val(this.level)}else if(this.type==="link"){$("#"+field_id+" .fst-target").val(this.target)}else if(this.type==="attachment"){$WK.preloadMedia(this.content,function(attachment){$("#"+field_id+" .wp-media-attachment-preview").attr("href",attachment.get("url")).text(attachment.get("url"))})}else if(this.type==="formula"){$("#"+field_id+" .fst-display-on-user-cart").val(this.display_on_user_cart==="1"?"on":"off")}}});$WK.saveFields()}};$WK.showExpressionEditor=function(){$("div.expression_oneline, div.expression_conditional, div.expression_off, div.expression_addon").hide();$("div.expression_"+$WK.expression.mode).show();if($WK.expression.mode==="off"){$(".off-hide").hide()}else{$(".off-hide").show()}};$("input.expression_type").on("change",function(){$WK.expression.mode=$(this).val();$WK.expressionLastFocusedInput=null;$WK.showExpressionEditor()});$WK.addCondition=function(if_value,then_value,addon=false){var $html=$('
    '+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    ');$(".input-if input",$html).val(if_value);$(".input-equation input",$html).val(then_value);if(addon===true){$("div#addon-inputs").append($html)}else{$("div#extra-inputs").append($html)}$WK.autocomplete()};$("button.add-condition").on("click",function(){$WK.addCondition()});$("button.add-addon").on("click",function(){$WK.addCondition("","",true)});$WK.autocomplete=function(){$(".input-icon input").bind("keydown",function(e){if(e.keyCode===16||e.keyCode===219){input_key_pressed[e.keyCode]=true}}).autocomplete({minLength:0,source:function(request,response){if(input_key_pressed[16]===true&&input_key_pressed[219]===true){response(suggest)}},focus:function(){return false},select:function(event,ui){delete input_key_pressed[16];delete input_key_pressed[219];this.value+=ui.item.value+"}";return false}})};$WK.saveExpression=function(){var mode=$WK.expression.mode;$WK.expr_saved=false;if(mode==="oneline"){$WK.expression.expr=$(".expression_oneline input").val();if($WK.expression.expr!==""){$WK.expr_saved=true}}if(mode==="conditional"){var data=[];$(".expression_conditional .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});var input_else=$(".expression_conditional .input-else input").val();data.push({type:"else",if:"true",then:input_else});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="addon"){var data=[];$(".expression_addon .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="off"){$("input[name=_wck_expression]").val("off")}else{$("input[name=_wck_expression]").val(JSON.stringify($WK.expression))}};$WK.loadExpression=function(){if(typeof wck_load_expression==="object"){$WK.expression.mode=wck_load_expression.mode;$WK.expression.expr=wck_load_expression.expr;if($WK.expression.mode==="oneline"){$(".expression_oneline input").val($WK.expression.expr);$("input[name=_wck_choose_expression_type].expression_oneline").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}else if($WK.expression.mode==="conditional"){$.each($WK.expression.expr,function(){if(this.type==="condition"){$WK.addCondition(this.if,this.then)}else if(this.type==="else"){$(".input-else input").val(this.then)}});$("input[name=_wck_choose_expression_type].expression_conditional").prop("checked",true);$WK.showExpressionEditor()}else if($WK.expression.mode==="addon"){$.each($WK.expression.expr,function(){$WK.addCondition(this.if,this.then,true)});$("input[name=_wck_choose_expression_type].expression_addon").prop("checked",true);$WK.showExpressionEditor()}}else{$WK.expression.mode="off";$("input[name=_wck_choose_expression_type].expression_off").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}};$("button.test-expression").on("click",function(){$WK.saveExpression()});$WK.toolbarOnTop=false;$(window).scroll(function(){if($(this).scrollTop()>100){if(!$WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=true;$("#wck-toolbar").css({top:"0px",bottom:"auto"}).fadeIn()})}}else if(!$("#postbox-container-2").hasClass("fullscreen")){if($WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=false;$("#wck-toolbar").css({top:"auto",bottom:"0px"}).fadeIn()})}}});$CV.window=$("#wck-cv-builder");$CV.builder=$CV.window.find(".builder");$CV.template=$CV.window.find(".template").children();$CV.context=null;$CV.open=function(context){$CV.context=context;var fieldSelect=$CV.template.find("select.p-field");fieldSelect.empty();$WK.saveFields();fieldSelect.append('');$.each($WK.fieldList.find(".field"),function(){if($(this).data("group")!=="static"&&!$(this).is(context)){var name=$(this).find(".f-name").val();fieldSelect.append('")}});$CV.builder.append($CV.template.clone());$CV.builder.find(".or-condition").remove();var loadData=$CV.context.find(".f-visibility").val();try{loadData=JSON.parse(loadData)}catch(e){loadData=false}if(typeof loadData==="object"){$.each(loadData,function(i,or_condition){var first=true;$.each(or_condition,function(j,and_condition){$CV.add(first?"or":"and",null,and_condition);first=false})})}else{$CV.add("or",null,null)}$CV.window.find("span.self-name").text(context.find(".f-name").val());$CV.window.show().css({display:"flex"})};$CV.close=function(){$CV.window.hide();$CV.builder.empty()};$CV.add=function(type,destination,values){if(destination===null){destination=$CV.builder.find("."+type+"-group").last()}destination.append($CV.window.find(".template ."+type+"-condition").clone());var newCondition=destination.find(".and-condition").last();if(values!==null&&typeof values==="object"){newCondition.find(".p-field").val(values.field);newCondition.find(".p-comparison").val(values.comp).trigger("change");newCondition.find(".p-value").val(values.value)}else{newCondition.find(".p-value").val("")}};$CV.validate=function(){var isValid=true;var conditions=$CV.builder.find(".and-condition");conditions.find(".validation-error").removeClass("validation-error");conditions.each(function(){var field=$(this).find(".p-field");var comp=$(this).find(".p-comparison").val();var value=$(this).find(".p-value");if([null,""].includes(field.val())){field.addClass("validation-error");isValid=false}if(!value.prop("disabled")&&value.val()===""){value.addClass("validation-error");isValid=false}if(["5","6","7","8"].includes(comp)&&!value.val().match(/^-?\d*[\.,]?\d+$/)){value.addClass("validation-error");isValid=false}if(comp==="9"&&value.val()===""){value.addClass("validation-error");isValid=false}});return isValid};$CV.window.on("click",".cv-action-and",function(e){e.preventDefault();$CV.add("and",$(this).prev(),null)});$CV.window.on("click",".cv-action-or",function(e){e.preventDefault();$CV.add("or",$(this).prev(),null)});$CV.window.on("click",".cv-remove",function(e){e.preventDefault();var count=$(this).closest(".and-group").children().length;if(count===1){$(this).closest(".or-condition").remove()}else{$(this).parent().remove()}});$CV.window.on("change","select.p-comparison",function(e){var disabled=["1","2"].includes($(this).val());var pVal=$(this).next(".p-value");pVal.prop("disabled",disabled);if(disabled){pVal.val("")}});$CV.window.on("click",".cv-close",function(e){e.preventDefault();$CV.close()});$CV.window.on("click",".cv-save",function(e){e.preventDefault();if(!$CV.validate()){alert("Please correct the form!");return false}var or_conditions=[];var or_readable=[];$.each($CV.builder.find(".or-condition"),function(){var and_conditions=[];var and_readable=[];$.each($(this).find(".and-condition"),function(){var item={field:$(this).find(".p-field").val(),comp:$(this).find(".p-comparison").val(),comp_text:$(this).find(".p-comparison option:selected").text(),value:$(this).find(".p-value").val()};and_conditions.push(item);and_readable.push("{"+item.field+"} "+item.comp_text+" "+item.value)});or_conditions.push(and_conditions);or_readable.push(" ( "+and_readable.join(" and ")+" ) ")});var readable=or_readable.join(" or ").replaceAll(" "," ");$CV.context.find(".f-visibility").val(or_conditions.length===0?"":JSON.stringify(or_conditions));$CV.context.find(".f-visibility-readable").val(readable);if(readable!==""){$CV.context.find(".visibility-readable").val("Rule preview: "+readable)}else{$CV.context.find(".visibility-readable").val("")}$CV.close()});$("body").on("click",".action-field-visibility",function(){var context=$(this).closest(".field");$CV.open(context)});$WK.init();$WK.loadExpression();$WK.autocomplete()})})(jQuery); \ No newline at end of file diff --git a/readme.md b/readme.md index 3a6ed86..971b879 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ Tags: woocommerce custom fields, woocommerce product price, woocommerce product fields, woocommerce custom price field, woocommerce personalized product, woocommerce custom product fields, product fields, custom product price, price calculation, price formula Requires at least: 5.0 Tested up to: 6.0.1 -Stable tag: 1.4.6 +Stable tag: 1.4.7 Requires PHP: 5.6 License: GNU GPLv2 Donate link: https://www.paypal.com/donate/?hosted_button_id=5DNZK72H5YCBY diff --git a/src/Fields/AbstractField.php b/src/Fields/AbstractField.php index d08e71e..3580992 100644 --- a/src/Fields/AbstractField.php +++ b/src/Fields/AbstractField.php @@ -28,6 +28,7 @@ public final function __construct() 'picker' => __('Picker Fields', 'wc-kalkulator'), 'upload' => __('Upload Fields', 'wc-kalkulator'), 'static' => __('Static Fields', 'wc-kalkulator'), + 'special' => __('Special Fields', 'wc-kalkulator'), 'other' => __('Other Fields', 'wc-kalkulator') ); @@ -113,7 +114,7 @@ public function html_hint() */ public function is_required() { - return $this->group() === 'static' ? false : $this->data["required"]; + return ($this->group() === 'static' || $this->type() === 'formula') ? false : $this->data["required"]; } /** diff --git a/src/Fields/FormulaField.php b/src/Fields/FormulaField.php new file mode 100644 index 0000000..cd1dc94 --- /dev/null +++ b/src/Fields/FormulaField.php @@ -0,0 +1,69 @@ + false, "content" => ""); + protected $data; + protected $type = "formula"; + protected $admin_title; + protected $use_expression = false; + protected $group = "special"; + protected $show_title = true; + + /** + * Output HTML for fields at backend. + * @param $value + * @return string + */ + public function admin_fields($value = '') + { + $this->admin_title = __("Value of Formula", "wc-kalkulator"); + return View::render('fields/admin/' . $this->type); + } + + /** + * Output HTML for product page + * @param $value + * @return string + */ + public function render_for_product($value = "") + { + return ""; + } + + /** + * No need to show hidden field in the user's cart + * @param $value + * @return string + */ + public function render_for_cart($value = '') + { + if($this->data('display_on_user_cart') === '1') { + return View::render('fields/cart', array( + 'title' => $this->data['title'], + 'value' => $value + )); + } + return ""; + } + + /** + * No need to validate + * @param $value + * @return bool + */ + public function validate($value) + { + return true; + } + +} \ No newline at end of file diff --git a/src/FieldsetPostType.php b/src/FieldsetPostType.php index ccf62bc..e3ae49f 100644 --- a/src/FieldsetPostType.php +++ b/src/FieldsetPostType.php @@ -39,7 +39,8 @@ class FieldsetPostType '_wck_choose_expression_type' => array('oneline', 'conditional', 'off', 'addon'), '_wck_version_hash' => 'text', '_wck_priority' => 'int', - '_wck_stock_reduction_multiplier' => 'text' + '_wck_stock_reduction_multiplier' => 'text', + '_wck_variation_prices_visible' => 'bool' ); /** @@ -235,6 +236,10 @@ public static function meta_boxes() 'title' => __('Assign this fieldset to:', 'wc-kalkulator'), 'position' => 'advanced' ), + 'options' => array( + 'title' => __('Options', 'wc-kalkulator'), + 'position' => 'side' + ), 'fields_editor' => array( 'title' => __('Product Fields Settings', 'wc-kalkulator'), 'position' => 'advanced' @@ -244,7 +249,11 @@ public static function meta_boxes() 'position' => 'advanced' ),*/ 'expression' => array( - 'title' => __('Price Calculation & Inventory', 'wc-kalkulator'), + 'title' => __('Price Calculation', 'wc-kalkulator'), + 'position' => 'advanced' + ), + 'inventory' => array( + 'title' => __('Inventory & Stock Management', 'wc-kalkulator'), 'position' => 'advanced' ), 'pricefilter' => array( @@ -279,8 +288,8 @@ function ($post, $data) { public static function metabox_order($order) { return array( - 'normal' => 'slugdiv,wck_assignment,wck_fields_editor,wck_expression', - 'side' => 'submitdiv,wck_fields,wck_pricefilter,wck_docs' + 'normal' => 'slugdiv,wck_assignment,wck_fields_editor,wck_expression,wck_inventory', + 'side' => 'submitdiv,wck_pricefilter,wck_options,wck_docs' ); } diff --git a/src/FieldsetProduct.php b/src/FieldsetProduct.php index bcb4ba0..b7363c3 100644 --- a/src/FieldsetProduct.php +++ b/src/FieldsetProduct.php @@ -264,6 +264,17 @@ public function version_hash() return $this->data->version_hash; } + /** + * Get state of variation prices visibility + * + * @return bool + * @since 1.4.7 + */ + public function is_variation_prices_visible() + { + return isset($this->data->variation_prices_visible) && (int)$this->data->variation_prices_visible === 1; + } + /** * Get fieldset id * @@ -292,7 +303,7 @@ public function layout() /** * Return HTML string for product page * - * @param array $html - array with keys 'hidden', 'fields', 'old_html' + * @param array $html - array with keys 'hidden', 'fields' * @return string|null * @since 1.0.0 */ @@ -339,19 +350,19 @@ public function get_user_input() $allowed_names = $this->fields_names(); //if (isset($_POST['wck']) && is_array($_POST['wck'])) { - $filtered_post = array(); - foreach ($allowed_names as $name) { - if (isset($_POST['wck'][$name])) { - $filtered_post[$name] = $_POST['wck'][$name]; - } else { - /* Set Default values if the field is not in POST data */ - if($this->field($name)['type'] === 'checkboxgroup') { - $filtered_post[$name] = array(); - } + $filtered_post = array(); + foreach ($allowed_names as $name) { + if (isset($_POST['wck'][$name])) { + $filtered_post[$name] = $_POST['wck'][$name]; + } else { + /* Set Default values if the field is not in POST data */ + if ($this->field($name)['type'] === 'checkboxgroup') { + $filtered_post[$name] = array(); } } + } - $user_input = Sanitizer::sanitize($filtered_post, 'array'); + $user_input = Sanitizer::sanitize($filtered_post, 'array'); //} foreach ($allowed_names as $name) { @@ -359,7 +370,7 @@ public function get_user_input() $filtered_post[$name] = $_POST['wck'][$name]; } else { /* Set Default values if the field is not in POST data */ - if($this->field($name)['type'] === 'checkboxgroup') { + if ($this->field($name)['type'] === 'checkboxgroup') { $filtered_post[$name] = array(); } } @@ -709,6 +720,10 @@ public function calculate() } $parser = new ExpressionParser($this->expression(), $this->user_input); if ($parser->is_ready()) { + $result = $parser->execute(); + if (isset($result['value']) && $result['is_error'] === false) { + $this->user_input['total_price'] = $result['value'] * $this->user_input["quantity"]; + } return $parser->execute(); } else { return Ajax::response('error', $parser->error); @@ -718,6 +733,41 @@ public function calculate() } } + /** + * Calculates the value of formula fields + * + * @return array + * @since 1.4.7 + */ + public function calculate_formula_fields() + { + $result = array(); + try { + foreach ($this->fields() as $field) { + if ($field->is_type("formula")) { + $expression = array( + 'mode' => 'oneline', + 'expr' => $field->data("content") + ); + $parser = new ExpressionParser($expression, $this->user_input); + if ($parser->is_ready()) { + $calc = $parser->execute(); + $result[$field->data("name")] = array( + 'title' => $field->data("title"), + 'name' => $field->data("name"), + 'value' => $calc['is_error'] === false ? $calc['value'] : ' - error - ' + ); + } + } + } + } catch (\Exception $e) { + error_log($e); + } catch (\Throwable $e) { + error_log($e); + } + return $result; + } + /** * Get stock reduction multiplier. * @@ -766,6 +816,17 @@ public function visibility_rules() return $rules; } + /** + * Return user input array + * + * @return array + * @since 1.4.7 + */ + public function user_input() + { + return $this->user_input; + } + /** * Cannot clone singleton * diff --git a/src/Woocommerce/Product.php b/src/Woocommerce/Product.php index 210a814..a1d29e6 100644 --- a/src/Woocommerce/Product.php +++ b/src/Woocommerce/Product.php @@ -35,6 +35,8 @@ public static function init() add_action('woocommerce_after_add_to_cart_button', array(__CLASS__, 'price_block')); add_filter('woocommerce_order_item_quantity', array(__CLASS__, 'reduce_inventory'), 10, 3); add_action('wp_enqueue_scripts', array(__CLASS__, 'enqueue_scripts')); + add_action('woocommerce_before_order_itemmeta', array(__CLASS__, 'display_itemmeta_for_admin'), 10, 3); + add_filter('woocommerce_hidden_order_itemmeta', array(__CLASS__, 'hide_itemmeta')); PriceFilter::getInstance(); Cart::getInstance(); @@ -49,7 +51,17 @@ public static function enqueue_scripts() { $fieldset = FieldsetProduct::getInstance(); if ($fieldset->has_fieldset('current')) { - if ($fieldset->has_expression('current')) { + + $fieldset->init(); + + /* + * "Price.min.css" forces price block to be hidden. + * Price blocks should be visible if the product is type of "variable" and user has selected 'variation_prices_visible' option. + * If price calculation is disabled, the option is not used and price.min.css will not load. + */ + $product = wc_get_product(Product::get_id()); + $is_variable_product = $product && $product->is_type('variable'); + if ($fieldset->has_expression('current') && !($is_variable_product && $fieldset->is_variation_prices_visible())) { wp_register_style('wckalkulator_price_css', Plugin::url() . '/assets/css/price.min.css'); wp_enqueue_style('wckalkulator_price_css'); } @@ -67,7 +79,6 @@ public static function enqueue_scripts() */ $enqueued = array(); $localize = array(); - $fieldset->init(); foreach ($fieldset->fields() as $field) { if (!in_array($field->type(), $enqueued)) { @@ -141,6 +152,9 @@ public static function render_fields_on_product_page() 'html' => wp_kses($field->render_for_product($value), Sanitizer::allowed_html()) . "\n", //colspan since 1.4.0 'colspan' => max((int)$field->data('colspan'), 1), + //type, group since 1.4.7 + 'type' => $field->type(), + 'group' => $field->group() ); //$html['visibility'][$field->data('name')] = $field->data('visibility'); } @@ -247,6 +261,8 @@ public static function add_cart_item_data($cart_item_data, $product_id, $variati if (!$calc['is_error']) { $cart_item_data['wckalkulator_price'] = $calc['value']; $cart_item_data['wckalkulator_stock_reduction_multiplier'] = $fieldset->stock_reduction_multiplier(); + $cart_item_data['wckalkulator_formula_fields'] = $fieldset->calculate_formula_fields(); + $success = true; } else { wp_die('Bad request (3)!'); @@ -337,6 +353,11 @@ public static function cart_item_name($item_name, $cart_item, $cart_item_key) $value = isset($cart_item['wckalkulator_fields']['_files'][$name]) ? $cart_item['wckalkulator_fields']['_files'][$name] : $cart_item['wckalkulator_fields'][$name]; $html .= $field->render_for_cart($value); } + if(isset($cart_item['wckalkulator_formula_fields'][$name])) { + $value = $cart_item['wckalkulator_formula_fields'][$name]['value']; + $html .= $field->render_for_cart($value); + } + } $item_name .= View::render('woocommerce/cart', array( @@ -381,9 +402,9 @@ public static function checkout_create_order_line_item($item, $cart_item_key, $v $fieldset->init($product_id, $variation_id); - // Add hidden field with all parameters. This is for cart editing. $item->add_meta_data('_wck_fields', $order_fields); $item->add_meta_data('_wck_stock_reduction_multiplier', $values['wckalkulator_stock_reduction_multiplier']); + $item->add_meta_data('_wck_formula_fields', $values['wckalkulator_formula_fields']); foreach ($fieldset->fields() as $name => $field) { @@ -453,7 +474,45 @@ public static function get_id() } /** - * Reduce inventory + * Display certain item meta only for admin (for example: special fields) + * + * @return void + * @since 1.4.7 + */ + public static function display_itemmeta_for_admin($item_id, $item, $product) + { + if (!(is_admin() && $item->is_type('line_item'))) + return; + + $formula_fields = $item->get_meta('_wck_formula_fields'); + + if (!empty($formula_fields)) { + echo ''; + foreach ($formula_fields as $field) { + echo ''; + echo ''; + } + echo '
    ' . esc_html($field['title']) . ':' . esc_html($field['value']) . '
    '; + } + } + + /** + * Set hidden item meta + * + * @return array + * @since 1.4.7 + */ + public static function hide_itemmeta($order_items) + { + $order_items[] = '_wck_stock_reduction_multiplier'; + $order_items[] = '_wck_formula_fields'; + $order_items[] = '_wck_fields'; + return $order_items; + } + + /** + * Reduce inventory quantity + * * @param $quantity * @param $order * @param $item @@ -463,7 +522,7 @@ public static function get_id() public static function reduce_inventory($quantity, $order, $item) { if ($item->meta_exists('_wck_stock_reduction_multiplier')) { - $multiplier = floatval( $item->get_meta('_wck_stock_reduction_multiplier', true) ); + $multiplier = floatval($item->get_meta('_wck_stock_reduction_multiplier', true)); return ceil($multiplier * $quantity); } return $quantity; diff --git a/views/admin/expression.php b/views/admin/expression.php index b673dd5..4eb6e1c 100644 --- a/views/admin/expression.php +++ b/views/admin/expression.php @@ -75,29 +75,6 @@ class="expression_type expression_addon"

  • -
    -

    - -

    -

    - ID, '_wck_stock_reduction_multiplier', true); - ?> -
    - -
    -

    -
    -
    • @@ -146,6 +123,7 @@ class="expression_type expression_addon" +
    +

    +
    diff --git a/views/admin/options.php b/views/admin/options.php new file mode 100644 index 0000000..3a1bc63 --- /dev/null +++ b/views/admin/options.php @@ -0,0 +1,22 @@ + +

    + ID, '_wck_variation_prices_visible', true) === 1; + ?> + + /> + +

    + diff --git a/views/fields/admin.php b/views/fields/admin.php index 5acc868..e0c0333 100644 --- a/views/fields/admin.php +++ b/views/fields/admin.php @@ -41,7 +41,7 @@
    - group !== 'static') : ?> + group !== 'static' && $view->group !== 'special') : ?>
    +
    \ No newline at end of file diff --git a/views/fields/admin/formula.php b/views/fields/admin/formula.php new file mode 100644 index 0000000..0fe210f --- /dev/null +++ b/views/fields/admin/formula.php @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/views/woocommerce/product.php b/views/woocommerce/product.php index 5079a8c..5b98f17 100644 --- a/views/woocommerce/product.php +++ b/views/woocommerce/product.php @@ -16,6 +16,12 @@ $col = 1; $row_opened = false; foreach ($view->fields as $field) { + + if($field['type'] === 'hidden' || $field['type'] === 'formula') { + echo wp_kses($field['html'], Sanitizer::allowed_html()); + continue; + } + if ($field['colspan'] === 2) { echo $row_opened ? '' : ''; $col = 1; diff --git a/wc-kalkulator.php b/wc-kalkulator.php index 5dde32d..8a8624c 100644 --- a/wc-kalkulator.php +++ b/wc-kalkulator.php @@ -3,7 +3,7 @@ /** * Plugin Name: WC Kalkulator * Description: Description: Store Manager can add fieldsets to Products and Orders. WC Kalkulator allows to order and calculate the price of the product based on the values of the fields selected by the Customer. - * Version: 1.4.6 + * Version: 1.4.7 * Author: Krzysztof Piątkowski * Author URI: https://wckalkulator.com * Text Domain: wc-kalkulator @@ -31,7 +31,7 @@ */ class Plugin { - const VERSION = "1.4.6"; + const VERSION = "1.4.7"; const NAME = "wc-kalkulator"; @@ -72,12 +72,13 @@ class Plugin Fields\HtmlField::class, Fields\HeadingField::class, Fields\ParagraphField::class, - Fields\HiddenField::class, + Fields\FormulaField::class, Fields\LinkField::class, Fields\AttachmentField::class, Fields\ImageswatchesField::class, Fields\ColorswatchesField::class, - Fields\EmptyField::class + Fields\EmptyField::class, + Fields\HiddenField::class ); /** From 7f03189bad375e0c830503b8736d8d99309b8f99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Fri, 5 Aug 2022 00:20:37 +0200 Subject: [PATCH 3/8] Update label --- views/admin/options.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/admin/options.php b/views/admin/options.php index 3a1bc63..f4563e4 100644 --- a/views/admin/options.php +++ b/views/admin/options.php @@ -15,7 +15,7 @@ />

    From 00af31e040b8792c8febc1d33656c05aaed0b3f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Fri, 5 Aug 2022 09:40:27 +0200 Subject: [PATCH 4/8] Update readme and docs md --- docs/changelog.md | 18 ++++++++++++++++++ docs/usermanual/fields.md | 4 ++++ readme.md | 31 +++++++++++++++++++------------ 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 01f758d..b5be208 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -5,6 +5,24 @@ icon: git-branch --- # CHANGELOG +2022-08-05 +v.1.4.7 +- fieldset's options (toggle default price blocks) +- new field: formula value +- bug fixes + +2022-07-23 +v.1.4.6 +- added is_selected() function +- bug fixes in multi checkbox + +2022-07-23 +v.1.4.5 +- conditional visibility support for multi checkbox + +2022-07-23 +v.1.4.4 +- bug fixes 2022-07-22 v.1.4.3 diff --git a/docs/usermanual/fields.md b/docs/usermanual/fields.md index c152b47..489ca11 100644 --- a/docs/usermanual/fields.md +++ b/docs/usermanual/fields.md @@ -233,6 +233,10 @@ Customer files will be deleted after 360 days (default option), but you can set You can use ``file size [MB]`` parameter in formulas. !!! +## Special: Formula Value + +This field is not showed on the product page. You can write your own formula and save the value in order item meta data. Value of the field may be displayed on user's cart. Hint: you can use ``{total_price}`` in your formula to get total product price calculated by WCK plugin. + !!! :zap: [Donate](https://www.paypal.com/donate/?hosted_button_id=5DNZK72H5YCBY) :zap: This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it! diff --git a/readme.md b/readme.md index 971b879..9adda27 100644 --- a/readme.md +++ b/readme.md @@ -7,7 +7,7 @@ Requires PHP: 5.6 License: GNU GPLv2 Donate link: https://www.paypal.com/donate/?hosted_button_id=5DNZK72H5YCBY -WooCommerce extra product fields and price calculator (formula). Absolutely FREE - 22 different field types on your product and order page. +WooCommerce extra product fields, addons and price calculator (formula). Absolutely FREE - 23 different field types on your product and order page. == Description == @@ -15,8 +15,8 @@ WooCommerce extra product fields and price calculator (formula). Absolutely FREE Extra product fields can be used to calculate product price and save information in order details. * Absolutely **FREE plugin** with **PRO features** -* **22 field types** to get customer input -* Price calculation based on **formula**, **conditional expression** or **price add-ons**. +* **23 field types** to get customer input +* Price calculation based on **formula**, **conditional expression** or **price add-ons** (product addons). If you appreciate my work - [Buy me a Coffee](https://www.buymeacoffee.com/piatkowski) or [Donate via PayPal](https://www.paypal.com/donate/?hosted_button_id=5DNZK72H5YCBY) @@ -51,6 +51,7 @@ Sell products by anything. You are not limited to sell only by length, area, vol 20. Textarea 21. Text input 22. Image upload + 23. Formula Value = = [youtube https://www.youtube.com/watch?v=Jrc1dXof_pw] @@ -61,7 +62,7 @@ Sell products by anything. You are not limited to sell only by length, area, vol - **Fieldset** - store manager can create the fieldset (set of custom product fields) which consists of different **Fields**. Fieldset must have at least one **Field** and the expression (formula) to calculate the product price -- **Expression/Formula** - mathematical and/or logical expression using to calculate the woocommerce custom price. The expression can be single-line (one-line) or conditional. **Expression** is protected and calculated only server-side. +- **Expression/Formula** - mathematical and/or logical expression using to calculate the woocommerce custom price. The expression can be single-line, conditional price addons (product addons). **Expression** is protected and calculated only server-side. - **Validation** - each **Field** has specific requirements to be met. Incorrect values make it impossible to calculate the woocommerce custom price and add the product to the cart. @@ -70,10 +71,11 @@ Sell products by anything. You are not limited to sell only by length, area, vol ### Formula/Expression Builder Use field's values as variables to calculate product price. Drag&drop conditional statements. +You can use product addons to add extra price to the product regular price. ### Price Add-Ons -Use custom fields to make Product Add-Ons. This feature is experimental and will be continued in the next releases. +Use custom fields to make Product Addons. ### Display Fields @@ -106,16 +108,16 @@ The customer can edit product options after adding to cart. ## Compatibility -* multisite mode is supported -* product shortcodes -* translation -* virtual and variable products are supported -* product regular and sale prices are supported -* product tags +* multisite mode is supported +* product shortcodes +* translation +* virtual and variable products are supported +* product regular and sale prices are supported +* product tags and attributes ## More Features -* define unlimited fieldsets with unlimited fields +* define unlimited fieldsets with unlimited fields * fields are displayed in product page, cart and order details, * **expression builder** * define single-line expression to calculate the price @@ -141,6 +143,11 @@ The customer can edit product options after adding to cart. Full documentation at: [www.wckalkulator.com](https://wckalkulator.com) == Changelog == +2022-08-05 v.1.4.7 +- fieldset's options (toggle default price blocks) +- new field: formula value +- bug fixes + 2022-07-23 v.1.4.6 - added is_selected() function - bug fixes in multi checkbox From 31c18c8c3223e89c9d189be187e183b4f665da31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Fri, 5 Aug 2022 11:36:31 +0200 Subject: [PATCH 5/8] Field Value field with price calculation disabled --- src/Ajax.php | 4 +-- src/FieldsetProduct.php | 64 ++++++++++++++++++++----------------- src/Woocommerce/Product.php | 16 +++++----- 3 files changed, 45 insertions(+), 39 deletions(-) diff --git a/src/Ajax.php b/src/Ajax.php index 960c4c4..3fe4881 100644 --- a/src/Ajax.php +++ b/src/Ajax.php @@ -112,9 +112,9 @@ public static function wckalkulator_calculate_price() $fieldset = FieldsetProduct::getInstance(); $fieldset->init($product_id, $variation_id); - $user_input = $fieldset->get_user_input(); + $fieldset->get_user_input(); - if (!$fieldset->validate($user_input, true) || !is_array($user_input)) { + if (!$fieldset->validate(true)) { Helper::message_for_manager("Data is invalid"); wp_die(""); } diff --git a/src/FieldsetProduct.php b/src/FieldsetProduct.php index b7363c3..33bacd8 100644 --- a/src/FieldsetProduct.php +++ b/src/FieldsetProduct.php @@ -414,7 +414,7 @@ public function get_user_input() $this->user_input = $user_input; - return $user_input; + return $this->user_input; } /** @@ -438,14 +438,13 @@ public function handle_temp_upload() /** * Validate user input * - * @param array $input * @param bool $is_ajax_cart * @return bool * @since 1.0.0 */ - public function validate($input, $is_ajax_cart = false) + public function validate($is_ajax_cart = false) { - $this->user_input = $input; + //$this->user_input = $input; if ($is_ajax_cart) { $this->is_valid = $this->validate_for_expression(); @@ -458,11 +457,7 @@ public function validate($input, $is_ajax_cart = false) return false; } - $this->add_static_prices($input); - - foreach (GlobalParameter::get_all() as $name => $value) { - $this->user_input['global:' . $name] = $value; - } + $this->set_additional_input_variables(); return $this->is_valid; } @@ -600,7 +595,7 @@ public function validate_values() * @return void * @since 1.2.0 */ - public function add_static_prices($input) + public function set_additional_input_variables() { if (!is_array($this->user_input)) { return; @@ -624,10 +619,35 @@ public function add_static_prices($input) $this->user_input[$name] = $static_price; } - if ($field->group() !== 'static' && isset($input[$name])) { - $this->register_extra_input_parameters($field, $input[$name]); + if ($field->group() !== 'static' && isset($this->user_input[$name])) { + $this->set_additional_field_parameters($field, $this->user_input[$name]); + } + } + + if ($this->product_id > 0) { + $product_helper = new ProductHelper($this->product_id, $this->variation_id); + if ($product_helper->is_valid()) { + $this->user_input["product_price"] = $product_helper->price(); + $this->user_input["product_weight"] = $product_helper->get_weight(); + $this->user_input["product_width"] = $product_helper->get_width(); + $this->user_input["product_height"] = $product_helper->get_height(); + $this->user_input["product_length"] = $product_helper->get_length(); + $this->user_input["product_regular_price"] = $product_helper->regular_price(); } } + + $this->user_input["is_user_logged"] = (int)is_user_logged_in(); + $this->user_input["current_month"] = absint(current_time("n")); + $this->user_input["day_of_month"] = absint(current_time("j")); + $this->user_input["day_of_week"] = absint(current_time("w")); + $this->user_input["current_hour"] = absint(current_time("G")); + if (isset($_POST["quantity"])) { + $this->user_input["quantity"] = absint($_POST["quantity"]); + } + + foreach (GlobalParameter::get_all() as $name => $value) { + $this->user_input['global:' . $name] = $value; + } } /** @@ -637,7 +657,7 @@ public function add_static_prices($input) * @param $input * @since 1.2.0 */ - public function register_extra_input_parameters($field, $input) + public function set_additional_field_parameters($field, $input) { $name = $field->data("name"); switch ($field->type()) { @@ -700,21 +720,7 @@ public function calculate() if ($this->is_valid) { if ($this->product_id > 0) { $product_helper = new ProductHelper($this->product_id, $this->variation_id); - - if ($product_helper->is_valid() && isset($_POST["quantity"])) { - $this->user_input["product_price"] = $product_helper->price(); - $this->user_input["product_weight"] = $product_helper->get_weight(); - $this->user_input["product_width"] = $product_helper->get_width(); - $this->user_input["product_height"] = $product_helper->get_height(); - $this->user_input["product_length"] = $product_helper->get_length(); - $this->user_input["product_regular_price"] = $product_helper->regular_price(); - $this->user_input["is_user_logged"] = (int)is_user_logged_in(); - $this->user_input["current_month"] = absint(current_time("n")); - $this->user_input["day_of_month"] = absint(current_time("j")); - $this->user_input["day_of_week"] = absint(current_time("w")); - $this->user_input["current_hour"] = absint(current_time("G")); - $this->user_input["quantity"] = absint($_POST["quantity"]); - } else { + if (!$product_helper->is_valid()) { return Ajax::response('error', __("Select variation options first!", "wc-kalkulator")); } } @@ -776,7 +782,7 @@ public function calculate_formula_fields() */ public function stock_reduction_multiplier() { - if ($this->is_valid && $this->product_id > 0) { + if ($this->product_id > 0) { try { $parser = new ExpressionParser(array( 'mode' => 'oneline', diff --git a/src/Woocommerce/Product.php b/src/Woocommerce/Product.php index a1d29e6..c2e9beb 100644 --- a/src/Woocommerce/Product.php +++ b/src/Woocommerce/Product.php @@ -183,9 +183,8 @@ public static function validate_fields_on_product_page($validation, $product_id, $variation_id = isset($_POST['variation_id']) ? absint($_POST['variation_id']) : 0; $fieldset->init($product_id, $variation_id); - $user_input = $fieldset->get_user_input(); - - $validation = $fieldset->validate($user_input); + $fieldset->get_user_input(); + $validation = $fieldset->validate(); if (!$validation) { foreach ($fieldset->validation_notices() as $notice) { wc_add_notice($notice, 'error'); @@ -200,8 +199,10 @@ public static function validate_fields_on_product_page($validation, $product_id, $validation = false; } } catch (\Exception $e) { + error_log($e); return false; } catch (\Throwable $e) { + error_log($e); return false; } } @@ -247,9 +248,8 @@ public static function add_cart_item_data($cart_item_data, $product_id, $variati $fieldset = FieldsetProduct::getInstance(); $fieldset->init($product_id, $variation_id); - $user_input = $fieldset->get_user_input(); - if (!$fieldset->validate($user_input)) { + if (!$fieldset->validate()) { wp_die('Bad request (2)!'); } @@ -260,9 +260,6 @@ public static function add_cart_item_data($cart_item_data, $product_id, $variati $calc = $fieldset->calculate(); if (!$calc['is_error']) { $cart_item_data['wckalkulator_price'] = $calc['value']; - $cart_item_data['wckalkulator_stock_reduction_multiplier'] = $fieldset->stock_reduction_multiplier(); - $cart_item_data['wckalkulator_formula_fields'] = $fieldset->calculate_formula_fields(); - $success = true; } else { wp_die('Bad request (3)!'); @@ -297,9 +294,12 @@ public static function add_cart_item_data($cart_item_data, $product_id, $variati $cart_item_data['wckalkulator_fields'] = $user_input; $cart_item_data['wckalkulator_fieldset_version_hash'] = $fieldset->version_hash(); $cart_item_data['wckalkulator_fieldset_id'] = $fieldset->id(); + $cart_item_data['wckalkulator_stock_reduction_multiplier'] = $fieldset->stock_reduction_multiplier(); + $cart_item_data['wckalkulator_formula_fields'] = $fieldset->calculate_formula_fields(); } } + return $cart_item_data; } From 3eb2bb949e0accf815b1d94510cba3a08237be58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Fri, 5 Aug 2022 16:01:20 +0200 Subject: [PATCH 6/8] Added option "required when visible" --- assets/js/admin.js | 20 ++++++++++++++++++-- assets/js/admin.min.js | 2 +- src/Fields/AbstractField.php | 17 +++++++++++++---- src/FieldsetProduct.php | 11 ----------- src/Sanitizer.php | 2 +- views/fields/admin/checkbox.php | 3 ++- views/fields/admin/colorpicker.php | 3 ++- views/fields/admin/colorswatches.php | 3 ++- views/fields/admin/datepicker.php | 3 ++- views/fields/admin/dropdown.php | 3 ++- views/fields/admin/fileupload.php | 3 ++- views/fields/admin/imageselect.php | 3 ++- views/fields/admin/imageupload.php | 3 ++- views/fields/admin/number.php | 3 ++- views/fields/admin/select.php | 3 ++- views/fields/admin/text.php | 3 ++- views/fields/front/checkbox.php | 2 +- views/fields/front/checkboxgroup.php | 2 +- views/fields/front/colorpicker.php | 2 +- views/fields/front/colorswatches.php | 2 +- views/fields/front/datepicker.php | 2 +- views/fields/front/dropdown.php | 2 +- views/fields/front/email.php | 2 +- views/fields/front/fileupload.php | 2 +- views/fields/front/imageselect.php | 2 +- views/fields/front/imageupload.php | 2 +- views/fields/front/number.php | 2 +- views/fields/front/radio.php | 2 +- views/fields/front/rangedatepicker.php | 2 +- views/fields/front/select.php | 2 +- views/fields/front/text.php | 2 +- views/fields/front/textarea.php | 2 +- 32 files changed, 71 insertions(+), 46 deletions(-) diff --git a/assets/js/admin.js b/assets/js/admin.js index aa5fa5d..fbe59e7 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -493,13 +493,29 @@ "hint": input_fhint.val(), "default_value": input_default_value.val(), "css_class": input_css_class.val(), - "required": (($row.find('select.f-required').length > 0) ? $row.find('select.f-required').val() === "on" : true), + //"required": (($row.find('select.f-required').length > 0) ? $row.find('select.f-required').val() === "on" : true), "layout": $WK.fieldsLayout, "colspan": $row.find('input.f-colspan').val(), "visibility": $row.find('input.f-visibility').val(), "visibility_readable": $row.find('input.f-visibility-readable').val() }; + if ($row.find('select.f-required').length > 0) { + switch($row.find('select.f-required').val()) { + case "on": + field.required = "1"; //true + break; + case "if-visible": + field.required = "2"; //if visible + break; + case "off": + field.required = "0"; //false + break; + } + } else { + field.required = "1"; //true + } + var input_fprice = $row.find('input.f-price'); if (input_fprice.length > 0) { field.price = input_fprice.val(); @@ -766,7 +782,7 @@ $("#" + field_id + " .f-hint").val(this.hint); $("#" + field_id + " .f-css-class").val(this.css_class); if ($("#" + field_id + " .f-required").length > 0) { - $("#" + field_id + " .f-required").val(this.required === "1" ? "on" : "off"); + $("#" + field_id + " .f-required").val(this.required === "1" ? "on" : (this.required === "2" ? "if-visible" : "off")); } if (this.hasOwnProperty("visibility")) { diff --git a/assets/js/admin.min.js b/assets/js/admin.min.js index 8bbadb7..358486f 100644 --- a/assets/js/admin.min.js +++ b/assets/js/admin.min.js @@ -1 +1 @@ -(function($){"use strict";var $WK={};var $CV={};$(document).ready(function($){var suggest=[];var input_key_pressed={};$("#f-field-list").sortable({handle:".header",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$("#extra-inputs, #addon-inputs").sortable({handle:".action-drag",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$('').insertBefore("#wpwrap");$WK.colorpicker=$("input.wck-global-color-picker");$WK.colorpicker.iris();$WK.expressionLastFocusedInput=null;$WK.wpMediaFrame=null;$WK.wpMediaTarget=null;$WK.iconPreloader="data:image/gif;base64,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";$WK.fieldsLayout="one-col";$WK.toggleButton=function(btn,e){e.preventDefault();if(btn.hasClass("woocommerce-input-toggle--disabled")){btn.removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");return true}else{btn.removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");return false}return false};$WK.fullscreenMode=function(state){if(state){$("body").css("overflow","hidden");$("#postbox-container-2").addClass("fullscreen")}else{$("body").css("overflow","auto");$("#postbox-container-2").removeClass("fullscreen")}};$(".wck-toggle-layout").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fieldsLayout=state?"two-col":"one-col";$WK.updateLayout()});$(".wck-toggle-fullscreen").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fullscreenMode(state)});$(".wck-toggle-expand").on("click",function(e){var state=$WK.toggleButton($(this),e);$(".action-toggle.dashicons-arrow-"+(state?"down":"up")+"-alt2").trigger("click")});$("body").on("click",".wck-toggle-colspan",function(e){e.preventDefault();var item=$(this).parent().parent().parent();if($(this).hasClass("woocommerce-input-toggle--disabled")){$(this).removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");item.addClass("wck-layout-colspan");item.find(".f-colspan").val(2)}else{$(this).removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");item.removeClass("wck-layout-colspan");item.find(".f-colspan").val(1)}});$(".action-save-post").on("click",function(e){e.preventDefault();$("#publish").trigger("click");if($("#publish").hasClass("disabled")){$(this).prop("disabled",true).addClass("disabled")}});$("body").on("click",".action-duplicate",function(e){e.preventDefault();var element=$(this).parent().parent().parent();var clonedElement=element.clone();clonedElement.hide();clonedElement.find(".f-title").val("");clonedElement.find(".f-name").val("");clonedElement.insertAfter(element);clonedElement.fadeIn(1500,function(){clonedElement.find(".dashicons-arrow-down-alt2").trigger("click");$(this).find(".f-title").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150);$(this).find(".f-name").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150)})});$WK.shouldHideExprToolbar=false;$WK.stateExprToolbar=false;$("body").on("focusin","#wck_expression .input-icon input, #wck_inventory .input-icon input, input.expression-editor-enabled",function(e){$WK.expressionLastFocusedInput=$(this);$WK.shouldHideExprToolbar=false;var posA=$(this).offset();var h=$(this).outerHeight();var posB=$("#wck_expression").offset();$("#wck-expression-toolbar").css({top:posA.top-posB.top-h-$("#wck-expression-toolbar").outerHeight()-20,left:posA.left-posB.left});if(!$WK.stateExprToolbar){$WK.stateExprToolbar=true;$WK.saveFields();$("#wck-parameters .first-selected").prop("selected",true);$("#wck-expression-toolbar").stop(true,false).fadeIn("fast")}$("#wck-parameters .total-price").toggle($(this).hasClass("show-total-price"));if(!$(this).hasClass("show-total-price")&&$("#wck-parameters").val()==="{total_price}"){$("#wck-parameters").val("")}}).on("focusout","#wck_expression input, #wck_inventory input, input.expression-editor-enabled",function(e){$WK.shouldHideExprToolbar=!(e.relatedTarget&&$("#wck-expression-toolbar").has(e.relatedTarget).length);setTimeout(function(){if($WK.stateExprToolbar&&$WK.shouldHideExprToolbar){$("#wck-expression-toolbar").stop(true,false).fadeOut("fast");$WK.stateExprToolbar=false}},200)}).on("click","#wck-expression-toolbar",function(e){if(e.target!==e.currentTarget&&e.target.tagName!=="OPTION")return;$WK.expressionLastFocusedInput.focus()}).on("click","button.add-field-to-formula, button.add-operator",function(e){e.preventDefault();var $focused=$WK.expressionLastFocusedInput;if(!$focused){$focused=$(".input-icon").find("input:visible").first();$focused.focus()}if($focused&&$focused.length){var value=$(this).hasClass("add-operator")?$(this).val():$("#wck-parameters").val();if(value===null){return}var cursorPos=$focused[0].selectionStart;var x=$focused.val();$focused.val(x.slice(0,cursorPos)+value+($(this).data("ending")||"")+x.slice(cursorPos));$focused.focus();cursorPos+=value.length;$focused[0].setSelectionRange(cursorPos,cursorPos)}}).on("click",".field .pairs .action-add",function(){var $clone=$(this).prev(".pair").clone().insertBefore($(this));$clone.find("input").val("")}).on("click",".field .pairs .action-showimport",function(){$(this).parent().find("div.importer").toggle()}).on("click",".field .pairs .action-import",function(){var $this=$(this);var input=$this.parent().find("textarea").val().trim().split("\n");if(Array.isArray(input)){input.forEach(function(el){var columns=el.trim().split(";");var $last_pair=$this.parent().parent().find(".pair").last();var $clone=$last_pair.clone().insertAfter($last_pair);if(columns.length===2){$clone.find("input.fs-name").val(columns[0]);$clone.find("input.fs-title").val(columns[1])}else if(columns.length===1){$clone.find("input.fs-title").val(columns[0])}})}}).on("click",".field .pairs .action-removeall",function(){if(confirm("Are you sure?")){$(this).parent().find(".pair").slice(1).remove()}}).on("click",".field .pair .action-delete",function(){var $pairs=$(this).closest(".pairs");if($pairs.children(".pair").length>1){if(confirm("Are you sure?")){$(this).closest(".pair").remove()}}else{alert("You cannot remove the last item!")}}).on("click",".field .header .action-delete",function(){if(confirm("Are you sure?")){var $target=$(this).closest("li");$target.fadeOut("slow",function(){$target.remove()})}}).on("click",".field .header .action-toggle",function(){var fieldBody=$(this).closest(".field").find(".body");fieldBody.slideToggle(300);$(this).toggleClass("dashicons-arrow-up-alt2");$(this).toggleClass("dashicons-arrow-down-alt2");if($(this).hasClass("dashicons-arrow-down-alt2")){$(this).parent().find(".name").text((fieldBody.find(".f-title").length?"- "+fieldBody.find(".f-title").val():"")+" {"+fieldBody.find(".f-name").val()+"}")}else{$(this).parent().find(".name").text("")}}).on("click","#add-field-button",function(e){e.preventDefault();var fieldType=$("#select-field").val();var id=$WK.addField(fieldType);$("html, body").animate({scrollTop:$("#"+id).offset().top-50},1e3)}).on("click",".expression_conditional .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#extra-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last condition!")}}).on("click",".expression_addon .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#addon-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last addon!")}}).on("click",".action-add-image",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this image"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();if($WK.wpMediaTarget.prop("tagName")==="A"){$WK.wpMediaTarget.next("img.wp-media-image-preview").attr("src",attachment.url);$WK.wpMediaTarget.next().next("input.wp-media-image-id").attr("value",attachment.id);$WK.wpMediaTarget.hide()}else{$WK.wpMediaTarget.attr("src",attachment.url);$WK.wpMediaTarget.next("input.wp-media-image-id").attr("value",attachment.id)}});$WK.wpMediaFrame.open()}).on("click",".action-add-attachment",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this file"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();$WK.wpMediaTarget.next("input.wp-media-attachment-id").val(attachment.id);$WK.wpMediaTarget.next().next("a.wp-media-attachment-preview").attr("href",attachment.url).text(attachment.url)});$WK.wpMediaFrame.open()}).on("focus",'[data-type="colorswatches"] input.fs-title',function(e){e.preventDefault();var _target=$(this);$WK.colorpicker.iris("show");$(".iris-picker").css({top:_target.offset().top+40,left:_target.offset().left});$WK.colorpicker.iris("option","change",function(event,ui){_target.val(ui.color.toString());var color=ui.color.toRgb();var t=(color.r+color.g+color.b)/2;var textColor=t<200?"#FFFFFF":"#000000";_target.css({"background-color":ui.color.toString(),color:textColor})});$WK.colorpicker.iris("color",$(this).val())}).on("click","input.allowed-extensions",function(){var field_id="#"+$(this).closest("li").attr("id");var ext=[];$(field_id+" input.allowed-extensions:checked").each(function(){ext.push($(this).data("extension"))});$(field_id+" input.fu-allowed-extensions").val(ext.join("|"))}).on("change","input.f-name",function(){var target=$(this);var newName=$(this).val().trim();if(newName!==""){$("#wck_fields_editor input.f-name").each(function(){if($(this).val()===newName&&!$(this).is(target)){alert("The name {"+newName+"} is already in use! Choose another name.");target.val("");return false}})}if($(this)[0].checkValidity()&&typeof $(this).data("lastValid")!=="undefined"){var oldName=$(this).data("lastValid");if(oldName!==newName){var oldNameInUse=false;$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){if($(this).val().includes(oldName)){oldNameInUse=true;return false}});if(oldNameInUse&&confirm("Wait! Seems like {"+oldName+"} is used in formulas! Do you want to replace {"+oldName+"} in all formulas? {"+oldName+"} will be changed to {"+newName+"}")){$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){$(this).val($(this).val().replaceAll("{"+oldName+"}","{"+newName+"}").replaceAll("{"+oldName+":","{"+newName+":").replaceAll('"field":"'+oldName+'"','"field":"'+newName+'"'))});$(this).data("lastValid",newName)}}}}).on("focusin","input.f-name",function(){if($(this)[0].checkValidity()){$(this).data("lastValid",$(this).val())}});$(".iris-square-value").on("click",function(e){e.preventDefault()});$(document).click(function(e){if(!$(e.target).closest('.iris-picker, [data-type="colorswatches"] input.fs-title').length){if($(".iris-picker").is(":visible")){$WK.colorpicker.iris("hide")}}});$("form#post").submit(function(e){$WK.saveFields();if(!$WK.saved){e.preventDefault();return false}$WK.saveExpression();if(!$WK.expr_saved&&$WK.expression.mode!=="off"){e.preventDefault();alert("Expression is required. Fill in required fields and try again!");return false}return true});$WK.init=function(){$WK.fieldList=$("#f-field-list");$WK.html=wck_fields_html;$WK.fields={};$WK.saved=false;$WK.expr_saved=false;$WK.counter=0;$WK.expression={mode:$("input.expression_type:checked").val()};$WK.loadJSONdata();$WK.showExpressionEditor();$WK.changeAssignType();$("form#post").attr("novalidate","");$WK.buildTooltips("");$WK.updateLayout();$("#wck-parameters .first-selected").prop("selected",true)};$WK.updateLayout=function(){if($WK.fieldsLayout==="two-col"){$WK.fieldList.addClass("layout-two-col")}else{$WK.fieldList.removeClass("layout-two-col")}};$WK.buildTooltips=function(selector){$(selector+"span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"})};$WK.changeAssignType=function(){var disabled=$("#assign_type").val()==="1";$("#assign_products, #assign_categories, #assign_tags, #assign_attributes").prop("disabled",disabled);$(".hide-if-disabled").toggle(!disabled)};$("#assign_type").on("change",$WK.changeAssignType);$WK.preloadMedia=function(id,callback){wp.media.attachment(id).fetch().then(function(){callback(wp.media.attachment(id))});return};$WK.addField=function(type){$WK.counter+=1;var id="wkfield-"+$WK.counter;$("li.welcome",$WK.fieldList).remove();$WK.fieldList.append($("
  • ",{"data-type":type,class:"form-invalid",id:id}).append($WK.html[type].replace("{id}",id)));$WK.buildTooltips("#"+id+" ");if($("#"+id).find(".pairs").length>0){$("#"+id+" .pairs").sortable({placeholder:"wck-sortable-placeholder",tolerance:"pointer"})}return id};$(window).on("beforeunload",function(){if($WK.saved===false){return""}});$WK.saveFields=function(){$WK.fields={};suggest=[];var error=$("li .field",$WK.fieldList).length===0;$("label.error").remove();$WK.saved=false;$("#wck-parameters .defined-fields").html("");$WK.appendGlobalParameters();if(error){alert("Please add at least one field before saving.");return false}$("li .field",$WK.fieldList).each(function(){var $row=$(this);var input_fname=$row.find("input.f-name");var input_ftitle=$row.find("input.f-title");var input_fhint=$row.find("input.f-hint");var input_default_value=$row.find("input.f-default-value");var input_css_class=$row.find("input.f-css-class");var field={type:$row.data("type"),use_expression:$row.data("use-expression")===true,name:input_fname.val(),title:input_ftitle.val(),hint:input_fhint.val(),default_value:input_default_value.val(),css_class:input_css_class.val(),required:$row.find("select.f-required").length>0?$row.find("select.f-required").val()==="on":true,layout:$WK.fieldsLayout,colspan:$row.find("input.f-colspan").val(),visibility:$row.find("input.f-visibility").val(),visibility_readable:$row.find("input.f-visibility-readable").val()};var input_fprice=$row.find("input.f-price");if(input_fprice.length>0){field.price=input_fprice.val();if(field.price!==""){field.use_expression=true}}var input_fimgwidth=$row.find("input.fimg-width");if(input_fimgwidth.length>0){field.image_size=input_fimgwidth.val()}var $fs_options;switch(field.type){case"select":case"radio":case"imageselect":case"imageswatches":case"colorswatches":case"radiogroup":case"checkboxgroup":field.options_name=[];field.options_title=[];if(field.type==="imageselect"||field.type==="imageswatches"){field.options_image=[]}if(field.type==="checkboxgroup"){field.select_limit=$row.find("input.fcbg-limit").val()}$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var fs_name=$(this).find("input.fs-name");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_name.val()+":"+fs_title.val()}field.options_name.push(fs_name.val()+":"+fs_title.val());field.options_title.push(fs_title.val());if(field.type==="imageselect"||field.type==="imageswatches"){var fs_image=$(this).find("input.fs-image");field.options_image.push(fs_image.val())}});break;case"dropdown":field.options_title=[];$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_title.val()}field.options_title.push(fs_title.val())});break;case"number":var input_fnmin=$row.find("input.fn-min-value");field.min=input_fnmin.val();var input_fnmax=$row.find("input.fn-max-value");field.max=input_fnmax.val();break;case"checkbox":var input_fcb_default_state=$row.find("select.fcb-default-state");field.default_state=input_fcb_default_state.val()==="on";break;case"text":case"textarea":case"email":var input_ftminlen=$row.find("input.ft-min-length");var input_ftmaxlen=$row.find("input.ft-max-length");var input_ftpattern=$row.find("input.ft-pattern");field.min=input_ftminlen.val();field.max=input_ftmaxlen.val();if(input_ftpattern.length>0){field.pattern=input_ftpattern.val()}break;case"colorpicker":case"datepicker":case"rangedatepicker":var input_fdpdisallow_past_date=$row.find("input.fdp-disallow-past-date");field.disallow_past_date=input_fdpdisallow_past_date.is(":checked");break;case"imageupload":field.max_file_size=$row.find("input.fu-max-file-size").val();field.allowed_extensions=$row.find("input.fu-allowed-extensions").val();break;case"html":case"paragraph":case"hidden":case"attachment":field.content=$row.find(".fst-content").val();break;case"formula":field.content=$row.find(".fst-content").val();field.display_on_user_cart=$row.find(".fst-display-on-user-cart").val()==="on";break;case"link":field.content=$row.find(".fst-content").val();field.target=$row.find(".fst-target").val();break;case"heading":field.content=$row.find(".fst-content").val();field.level=$row.find(".fst-level").val();break}if(field.name!==""&&field.name in $WK.fields){error=true;alert("Field names must be unique! The '"+field.name+"' name is used more than once.")}if(!error){$WK.appendFormulaVars(field)}});var wkform=$("form#post");if(!wkform[0].checkValidity()){error=true;$("input:invalid").closest(".field").find(".action-toggle.dashicons-arrow-down-alt2").trigger("click");$("input:invalid").each(function(){$('").insertBefore($(this))})}if(error&&$("label.error").length){$("html, body").animate({scrollTop:$("label.error").first().offset().top-160},1e3)}$WK.saveJSONdata();$WK.saved=!error};$WK.appendGlobalParameters=function(){if(typeof wck_global_parameters!==undefined){$("#wck-parameters .global-parameters").html("");$.each(wck_global_parameters,function(name,value){var name="global:"+name;var appendChildren="";suggest.push(name);if(typeof value==="object"){$.each(value,function(k,v){var suffix="['"+k+"']";appendChildren=appendChildren+'"});value=""}else{value=" = "+value}$("#wck-parameters .global-parameters").append('");$("#wck-parameters .global-parameters").append(appendChildren)})}};$WK.appendFormulaVars=function(field){$WK.fields[field.name]=field;if(field.use_expression){if(field.type!=="checkboxgroup"){suggest.push(field.name);$("#wck-parameters .defined-fields").append('")}else{suggest.push(field.name);$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":sum");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":min");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":max");$("#wck-parameters .defined-fields").append('")}if(field.type==="text"||field.type==="textarea"){suggest.push(field.name+":text");$("#wck-parameters .defined-fields").append('")}if(field.type==="rangedatepicker"){suggest.push(field.name+":date_from");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":date_to");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":days");$("#wck-parameters .defined-fields").append('")}else if(field.type==="datepicker"){suggest.push(field.name+":date");$("#wck-parameters .defined-fields").append('")}else if(field.type==="imageupload"){suggest.push(field.name+":size");$("#wck-parameters .defined-fields").append('")}}};$WK.saveJSONdata=function(){if(Object.keys($WK.fields).length>0){$("input[name=_wck_fieldset]").val(JSON.stringify($WK.fields))}};$WK.loadJSONdata=function(){if(typeof wck_load_fieldset==="object"){var layoutLoaded=false;$.each(wck_load_fieldset,function(){if(!layoutLoaded){if(this.hasOwnProperty("layout")&&this.layout==="two-col"){$(".wck-toggle-layout").trigger("click")}layoutLoaded=true}var field_id=$WK.addField(this.type);var $field=$("#"+field_id+" .field");$("#"+field_id+" .f-name").val(this.name);if(this.hasOwnProperty("colspan")){$("#"+field_id+" .f-colspan").val(this.colspan);if(this.colspan==="2"){$("#"+field_id+" .wck-toggle-colspan").trigger("click")}}$("#"+field_id+" .f-title").val(this.title);$("#"+field_id+" .f-hint").val(this.hint);$("#"+field_id+" .f-css-class").val(this.css_class);if($("#"+field_id+" .f-required").length>0){$("#"+field_id+" .f-required").val(this.required==="1"?"on":"off")}if(this.hasOwnProperty("visibility")){$("#"+field_id+" .f-visibility").val(this.visibility);$("#"+field_id+" .f-visibility-readable").val(this.visibility_readable);if(this.visibility_readable!==""){$("#"+field_id+" .visibility-readable").val("Rule preview: "+this.visibility_readable)}}var fprice=$("#"+field_id+" .f-price");if(fprice.length>0){fprice.val(this.price)}var fimgwidth=$("#"+field_id+" .fimg-width");if(fimgwidth.length>0){fimgwidth.val(this.image_size)}var options_title,options_name,options_image,default_value,first,$checked;if(this.type==="dropdown"){options_title=this.options_title;default_value=this.default_value;first=true;$checked=null;$.each(options_title,function(i,option_title){if(first){var $first=$field.find(".fs-option");$first.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(["select","radio","imageselect","radiogroup","checkboxgroup","imageswatches","colorswatches"].indexOf(this.type)>=0){options_name=this.options_name;options_title=this.options_title;default_value=this.default_value;if(this.type==="imageselect"||this.type==="imageswatches"){options_image=this.options_image;wp.media.attachment(options_image).fetch()}if(this.type==="checkboxgroup"){$("#"+field_id+" .fcbg-limit").val(this.select_limit)}first=true;$checked=null;$.each(options_name,function(i,option_name){if(option_name.indexOf(":")>=0){option_name=option_name.slice(0,option_name.indexOf(":"))}if(first){var $first=$field.find(".fs-option");$first.find("input.fs-name").val(option_name);$first.find("input.fs-title").val(options_title[i]);var fs_image=$first.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$first.find("a.action-add-image").hide();$first.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$first.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-name").val(option_name);$clone.find("input.fs-title").val(options_title[i]);fs_image=$clone.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$clone.find("a.action-add-image").hide();$clone.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$clone.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(this.type==="number"){$("#"+field_id+" .fn-min-value").val(this.min);$("#"+field_id+" .fn-max-value").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value)}else if(this.type==="checkbox"){$("#"+field_id+" .fcb-default-state").val(this.default_state==="1"?"on":"off")}else if(this.type==="text"||this.type==="textarea"||this.type==="email"){$("#"+field_id+" .ft-min-length").val(this.min);$("#"+field_id+" .ft-max-length").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value);if(this.type==="text"){$("#"+field_id+" .ft-pattern").val(this.pattern)}}else if(this.type==="colorpicker"||this.type==="datepicker"||this.type==="rangedatepicker"){$("#"+field_id+" .fdp-disallow-past-date").prop("checked",this.disallow_past_date)}else if(this.type==="imageupload"){$("#"+field_id+" .fu-max-file-size").val(this.max_file_size);$("#"+field_id+" .fu-allowed-extensions").val(this.allowed_extensions);var ext=this.allowed_extensions.split("|");ext.forEach(function(e){$("#"+field_id+" .allowed-extensions.ext-"+e).prop("checked",true)})}else if(["html","paragraph","heading","hidden","link","attachment","formula"].indexOf(this.type)>=0){$("#"+field_id+" .fst-content").val(this.content);if(this.type==="heading"){$("#"+field_id+" .fst-level").val(this.level)}else if(this.type==="link"){$("#"+field_id+" .fst-target").val(this.target)}else if(this.type==="attachment"){$WK.preloadMedia(this.content,function(attachment){$("#"+field_id+" .wp-media-attachment-preview").attr("href",attachment.get("url")).text(attachment.get("url"))})}else if(this.type==="formula"){$("#"+field_id+" .fst-display-on-user-cart").val(this.display_on_user_cart==="1"?"on":"off")}}});$WK.saveFields()}};$WK.showExpressionEditor=function(){$("div.expression_oneline, div.expression_conditional, div.expression_off, div.expression_addon").hide();$("div.expression_"+$WK.expression.mode).show();if($WK.expression.mode==="off"){$(".off-hide").hide()}else{$(".off-hide").show()}};$("input.expression_type").on("change",function(){$WK.expression.mode=$(this).val();$WK.expressionLastFocusedInput=null;$WK.showExpressionEditor()});$WK.addCondition=function(if_value,then_value,addon=false){var $html=$('
    '+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    ');$(".input-if input",$html).val(if_value);$(".input-equation input",$html).val(then_value);if(addon===true){$("div#addon-inputs").append($html)}else{$("div#extra-inputs").append($html)}$WK.autocomplete()};$("button.add-condition").on("click",function(){$WK.addCondition()});$("button.add-addon").on("click",function(){$WK.addCondition("","",true)});$WK.autocomplete=function(){$(".input-icon input").bind("keydown",function(e){if(e.keyCode===16||e.keyCode===219){input_key_pressed[e.keyCode]=true}}).autocomplete({minLength:0,source:function(request,response){if(input_key_pressed[16]===true&&input_key_pressed[219]===true){response(suggest)}},focus:function(){return false},select:function(event,ui){delete input_key_pressed[16];delete input_key_pressed[219];this.value+=ui.item.value+"}";return false}})};$WK.saveExpression=function(){var mode=$WK.expression.mode;$WK.expr_saved=false;if(mode==="oneline"){$WK.expression.expr=$(".expression_oneline input").val();if($WK.expression.expr!==""){$WK.expr_saved=true}}if(mode==="conditional"){var data=[];$(".expression_conditional .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});var input_else=$(".expression_conditional .input-else input").val();data.push({type:"else",if:"true",then:input_else});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="addon"){var data=[];$(".expression_addon .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="off"){$("input[name=_wck_expression]").val("off")}else{$("input[name=_wck_expression]").val(JSON.stringify($WK.expression))}};$WK.loadExpression=function(){if(typeof wck_load_expression==="object"){$WK.expression.mode=wck_load_expression.mode;$WK.expression.expr=wck_load_expression.expr;if($WK.expression.mode==="oneline"){$(".expression_oneline input").val($WK.expression.expr);$("input[name=_wck_choose_expression_type].expression_oneline").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}else if($WK.expression.mode==="conditional"){$.each($WK.expression.expr,function(){if(this.type==="condition"){$WK.addCondition(this.if,this.then)}else if(this.type==="else"){$(".input-else input").val(this.then)}});$("input[name=_wck_choose_expression_type].expression_conditional").prop("checked",true);$WK.showExpressionEditor()}else if($WK.expression.mode==="addon"){$.each($WK.expression.expr,function(){$WK.addCondition(this.if,this.then,true)});$("input[name=_wck_choose_expression_type].expression_addon").prop("checked",true);$WK.showExpressionEditor()}}else{$WK.expression.mode="off";$("input[name=_wck_choose_expression_type].expression_off").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}};$("button.test-expression").on("click",function(){$WK.saveExpression()});$WK.toolbarOnTop=false;$(window).scroll(function(){if($(this).scrollTop()>100){if(!$WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=true;$("#wck-toolbar").css({top:"0px",bottom:"auto"}).fadeIn()})}}else if(!$("#postbox-container-2").hasClass("fullscreen")){if($WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=false;$("#wck-toolbar").css({top:"auto",bottom:"0px"}).fadeIn()})}}});$CV.window=$("#wck-cv-builder");$CV.builder=$CV.window.find(".builder");$CV.template=$CV.window.find(".template").children();$CV.context=null;$CV.open=function(context){$CV.context=context;var fieldSelect=$CV.template.find("select.p-field");fieldSelect.empty();$WK.saveFields();fieldSelect.append('');$.each($WK.fieldList.find(".field"),function(){if($(this).data("group")!=="static"&&!$(this).is(context)){var name=$(this).find(".f-name").val();fieldSelect.append('")}});$CV.builder.append($CV.template.clone());$CV.builder.find(".or-condition").remove();var loadData=$CV.context.find(".f-visibility").val();try{loadData=JSON.parse(loadData)}catch(e){loadData=false}if(typeof loadData==="object"){$.each(loadData,function(i,or_condition){var first=true;$.each(or_condition,function(j,and_condition){$CV.add(first?"or":"and",null,and_condition);first=false})})}else{$CV.add("or",null,null)}$CV.window.find("span.self-name").text(context.find(".f-name").val());$CV.window.show().css({display:"flex"})};$CV.close=function(){$CV.window.hide();$CV.builder.empty()};$CV.add=function(type,destination,values){if(destination===null){destination=$CV.builder.find("."+type+"-group").last()}destination.append($CV.window.find(".template ."+type+"-condition").clone());var newCondition=destination.find(".and-condition").last();if(values!==null&&typeof values==="object"){newCondition.find(".p-field").val(values.field);newCondition.find(".p-comparison").val(values.comp).trigger("change");newCondition.find(".p-value").val(values.value)}else{newCondition.find(".p-value").val("")}};$CV.validate=function(){var isValid=true;var conditions=$CV.builder.find(".and-condition");conditions.find(".validation-error").removeClass("validation-error");conditions.each(function(){var field=$(this).find(".p-field");var comp=$(this).find(".p-comparison").val();var value=$(this).find(".p-value");if([null,""].includes(field.val())){field.addClass("validation-error");isValid=false}if(!value.prop("disabled")&&value.val()===""){value.addClass("validation-error");isValid=false}if(["5","6","7","8"].includes(comp)&&!value.val().match(/^-?\d*[\.,]?\d+$/)){value.addClass("validation-error");isValid=false}if(comp==="9"&&value.val()===""){value.addClass("validation-error");isValid=false}});return isValid};$CV.window.on("click",".cv-action-and",function(e){e.preventDefault();$CV.add("and",$(this).prev(),null)});$CV.window.on("click",".cv-action-or",function(e){e.preventDefault();$CV.add("or",$(this).prev(),null)});$CV.window.on("click",".cv-remove",function(e){e.preventDefault();var count=$(this).closest(".and-group").children().length;if(count===1){$(this).closest(".or-condition").remove()}else{$(this).parent().remove()}});$CV.window.on("change","select.p-comparison",function(e){var disabled=["1","2"].includes($(this).val());var pVal=$(this).next(".p-value");pVal.prop("disabled",disabled);if(disabled){pVal.val("")}});$CV.window.on("click",".cv-close",function(e){e.preventDefault();$CV.close()});$CV.window.on("click",".cv-save",function(e){e.preventDefault();if(!$CV.validate()){alert("Please correct the form!");return false}var or_conditions=[];var or_readable=[];$.each($CV.builder.find(".or-condition"),function(){var and_conditions=[];var and_readable=[];$.each($(this).find(".and-condition"),function(){var item={field:$(this).find(".p-field").val(),comp:$(this).find(".p-comparison").val(),comp_text:$(this).find(".p-comparison option:selected").text(),value:$(this).find(".p-value").val()};and_conditions.push(item);and_readable.push("{"+item.field+"} "+item.comp_text+" "+item.value)});or_conditions.push(and_conditions);or_readable.push(" ( "+and_readable.join(" and ")+" ) ")});var readable=or_readable.join(" or ").replaceAll(" "," ");$CV.context.find(".f-visibility").val(or_conditions.length===0?"":JSON.stringify(or_conditions));$CV.context.find(".f-visibility-readable").val(readable);if(readable!==""){$CV.context.find(".visibility-readable").val("Rule preview: "+readable)}else{$CV.context.find(".visibility-readable").val("")}$CV.close()});$("body").on("click",".action-field-visibility",function(){var context=$(this).closest(".field");$CV.open(context)});$WK.init();$WK.loadExpression();$WK.autocomplete()})})(jQuery); \ No newline at end of file +(function($){"use strict";var $WK={};var $CV={};$(document).ready(function($){var suggest=[];var input_key_pressed={};$("#f-field-list").sortable({handle:".header",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$("#extra-inputs, #addon-inputs").sortable({handle:".action-drag",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$('').insertBefore("#wpwrap");$WK.colorpicker=$("input.wck-global-color-picker");$WK.colorpicker.iris();$WK.expressionLastFocusedInput=null;$WK.wpMediaFrame=null;$WK.wpMediaTarget=null;$WK.iconPreloader="data:image/gif;base64,R0lGODlhEAAQAPUVAHt7e729vf///4R7e+/v762trZSUlKWlpZycnPf39+bm5t7e3tbW1s7OzoSEhMXFxc7FzpSMjJyUlP/397WtraWlnM7FxbW1tb21tebe3tbOzqWcnIyEhHNzc3tzc4yMjK2lpbWttcW9vffv76Wtpa2lra2tpb21vcXFzt7e1qWlrdbe1pScnO/v5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBwAVACwAAAAAEAAQAEAGt8CKsGLZfDyez8YyrAAekAdA09R0GoLGE8BgLDQIhwORSSQIDqYxELhcCoXDARHeCBmRSGOh6BMICxIRDBUOAQ0NBiBNIBsTAgscGwgPDxcABYgFHnQSSkMFAAYHcAgRHQVNQgUDmX0NFA6pQxsGC7d9Cn8ECRt2GwddDwMgiCAOC2YYGwCIWlRDGgACAgkADhiVEYtDIAMGAQYcUmxtHwDXc3QdDxV4DhRucHIIAIOqRRxIkkxDQQAh+QQFBwAQACwAAAAAEAAQAAAGr0CIEGLZfDyez8YybBYAh8diYSkMCk1G5PNgrKYKBcMQYQg3hgZjDQ4TEBvIA/BoNCySgQMBIRAUDkVRDQEDIHYgDgx+FxsOFw8PBiBNIAgJCQscAAGRABpNGgCYBACcAQGfoaMJpQ4hqB+UQyAbAgKaGwgXF08FdgUdF7cBG3O8vQ6meypiAw8QRr0FBwcI1wgHDnEQWg4H1NbXBgBlTh4G2dYfHVhNQkUcSBxLTUEAIfkECQcAEAAsAQABAA4ADgAABnBAiFAYYDAeoKEy0GgYF4uG8vN4NJ9QxTBQfQgHQoViMUAEAhiAMqygFM6ftZBAYFzu8jlBcb/kISN0IAUFHHIICQkMBoQHHkoOGYkXHgUkBwdKCgIJBA4QDpgHCAgGFwICE5lfpKQGRQsIch+tBmtBACH5BAUHABQALAEAAQAOAA4AAAaaQAqlAEBcHo3AAVAQMiKO4wPSaDAsnwhj8wkEHuAqg7EwbAAXbyAyGBgaiwVjILlcQgBQFTSALwoHdh8gQkIgEgoKDQWMABqFFBoAiQsHjB6PhZKJChUHBw6EhSAIBAQMBp8IHgVVBQ4UphceBwi2AwAOBwoJBAoOGw62CG8CEwnIGxtPRRIBAtAJCghaQgUdHwYMAgsXDk0UQQAh+QQFBwAQACwBAAEADgAOAAAGcECIECIpBB4XxHBZuASOD5RoyblYn49HYyv0FL4XCECoZTTGhwJoSWYwQIjDwcEWMhYP+cFThywWDAiCfX5/gkp9CgoNH4IGiQoFEHEFDxt0GwsECgtCAxAECQIJpASmiBAeDQKjpQsSbAMYC6QMbEEAIfkEBQcAEAAsAQABAA4ADgAABnZAiNAjOVwCBaFSCDgUCpdjAMNZHpzQU0D0eESEVycHAIgEuo8yAgHxLAGBRkO4Xi7lIoSBbRcyGA0SCB99fn8GD3N9EgsLDxwEAhkOdg2NBQAjAgIKSggMCo0DEAcTCacjBAQKrEsICqeqqwx9DhgMqgwUo0JBACH5BAkHAAAALAEAAQAOAA4AAAVjICACEVIUhzGuyHGc10WtANK+RRwEo92ulx0PIKnRAJfHY2MIGAbHiBLTEDSOogfkkRAIoMdG47EQTDZYcQCTSBwHDwbj4AC0MwgAVLOQi9AEgQqDC4UqIwuChFdHFBqDjCMhACH5BAUHABMALAEAAQAOAA4AAAaTwMmk0PlIDgeEwVMQMiIAA2KKLBwGEcbGkZwiqoULZzNgEC4IBwDAKYQvgIBA8OiAGg0Q4I1YzA8gQkIgHwEBIQmJAxqCExoehgEEioyCGgAPDwELiQiBgiAGmRgXBAQMDgV4BQMiDRAHDgqmEwgDAwYQeBYAGwgECsELCwzFDQYbTxIMwsMMDxFZQqyqww8He0JBACH5BAUHAAMALAEAAQAOAA4AAAZzwIEQYBggEIaPcGlUKBqG4xGw3CQEgkAUcTiYhA7CVcHskgqeSyKRcTA9h0LBwFhvmEJO6FIi+PFLF4IKflR4HgGCDH+AHwEBBQNOGngAGA8BCAMLTgMSSw+hIksKC6YMDA0NoRFMDaepDQGAAyAPqLNMQQAh+QQFBwAYACwBAAEADgAOAAAFZSAmOtciMGKaSlgivAGrIm0yCY2B7KlCJJiDQ7RDHEQEgiplPGKStGXwUFFYAVJMoXBYWLPabcMqW14uh8JigRksKWfJgLHOYQCRgP4ikiwYDA0ND4R6SxaBDRCEfEtYAYIXUSIhACH5BAkHABAALAEAAQAOAA4AAAZyQIhQyEgkFhjHcLggGBMCAcOzbBEII6PAeBhABgsFYbGBOA6iwgEBKSgUjKXQwEJ8Gm/5EMFf+PVCfAgMf4AHhw8LcXpnayAMDA96IAUFQg0MDZIAQheVBVQQDaMPDwEBF6kcQx8ipaaoBUpyGxemlktBACH5BAUHABAALAEAAQAOAA4AAAaRQAikMCg0CATGxVEQMiIGhgJJSCQUiAhjI1F4p1Vr4rAZLBYKBsLh2CgEggSgcG44QI0GyAFJED4PKQsSIEJCewEBUQwMABqGEBodHwgSDYyOkJIInAF5BoWGe5wIB3kBc3kFHgcHWQAPsQEfAAAcBa0HHhsGsokXBcEHbU8fF78XwMNaQgUACAUBFwcGHk0QQQA7";$WK.fieldsLayout="one-col";$WK.toggleButton=function(btn,e){e.preventDefault();if(btn.hasClass("woocommerce-input-toggle--disabled")){btn.removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");return true}else{btn.removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");return false}return false};$WK.fullscreenMode=function(state){if(state){$("body").css("overflow","hidden");$("#postbox-container-2").addClass("fullscreen")}else{$("body").css("overflow","auto");$("#postbox-container-2").removeClass("fullscreen")}};$(".wck-toggle-layout").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fieldsLayout=state?"two-col":"one-col";$WK.updateLayout()});$(".wck-toggle-fullscreen").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fullscreenMode(state)});$(".wck-toggle-expand").on("click",function(e){var state=$WK.toggleButton($(this),e);$(".action-toggle.dashicons-arrow-"+(state?"down":"up")+"-alt2").trigger("click")});$("body").on("click",".wck-toggle-colspan",function(e){e.preventDefault();var item=$(this).parent().parent().parent();if($(this).hasClass("woocommerce-input-toggle--disabled")){$(this).removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");item.addClass("wck-layout-colspan");item.find(".f-colspan").val(2)}else{$(this).removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");item.removeClass("wck-layout-colspan");item.find(".f-colspan").val(1)}});$(".action-save-post").on("click",function(e){e.preventDefault();$("#publish").trigger("click");if($("#publish").hasClass("disabled")){$(this).prop("disabled",true).addClass("disabled")}});$("body").on("click",".action-duplicate",function(e){e.preventDefault();var element=$(this).parent().parent().parent();var clonedElement=element.clone();clonedElement.hide();clonedElement.find(".f-title").val("");clonedElement.find(".f-name").val("");clonedElement.insertAfter(element);clonedElement.fadeIn(1500,function(){clonedElement.find(".dashicons-arrow-down-alt2").trigger("click");$(this).find(".f-title").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150);$(this).find(".f-name").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150)})});$WK.shouldHideExprToolbar=false;$WK.stateExprToolbar=false;$("body").on("focusin","#wck_expression .input-icon input, #wck_inventory .input-icon input, input.expression-editor-enabled",function(e){$WK.expressionLastFocusedInput=$(this);$WK.shouldHideExprToolbar=false;var posA=$(this).offset();var h=$(this).outerHeight();var posB=$("#wck_expression").offset();$("#wck-expression-toolbar").css({top:posA.top-posB.top-h-$("#wck-expression-toolbar").outerHeight()-20,left:posA.left-posB.left});if(!$WK.stateExprToolbar){$WK.stateExprToolbar=true;$WK.saveFields();$("#wck-parameters .first-selected").prop("selected",true);$("#wck-expression-toolbar").stop(true,false).fadeIn("fast")}$("#wck-parameters .total-price").toggle($(this).hasClass("show-total-price"));if(!$(this).hasClass("show-total-price")&&$("#wck-parameters").val()==="{total_price}"){$("#wck-parameters").val("")}}).on("focusout","#wck_expression input, #wck_inventory input, input.expression-editor-enabled",function(e){$WK.shouldHideExprToolbar=!(e.relatedTarget&&$("#wck-expression-toolbar").has(e.relatedTarget).length);setTimeout(function(){if($WK.stateExprToolbar&&$WK.shouldHideExprToolbar){$("#wck-expression-toolbar").stop(true,false).fadeOut("fast");$WK.stateExprToolbar=false}},200)}).on("click","#wck-expression-toolbar",function(e){if(e.target!==e.currentTarget&&e.target.tagName!=="OPTION")return;$WK.expressionLastFocusedInput.focus()}).on("click","button.add-field-to-formula, button.add-operator",function(e){e.preventDefault();var $focused=$WK.expressionLastFocusedInput;if(!$focused){$focused=$(".input-icon").find("input:visible").first();$focused.focus()}if($focused&&$focused.length){var value=$(this).hasClass("add-operator")?$(this).val():$("#wck-parameters").val();if(value===null){return}var cursorPos=$focused[0].selectionStart;var x=$focused.val();$focused.val(x.slice(0,cursorPos)+value+($(this).data("ending")||"")+x.slice(cursorPos));$focused.focus();cursorPos+=value.length;$focused[0].setSelectionRange(cursorPos,cursorPos)}}).on("click",".field .pairs .action-add",function(){var $clone=$(this).prev(".pair").clone().insertBefore($(this));$clone.find("input").val("")}).on("click",".field .pairs .action-showimport",function(){$(this).parent().find("div.importer").toggle()}).on("click",".field .pairs .action-import",function(){var $this=$(this);var input=$this.parent().find("textarea").val().trim().split("\n");if(Array.isArray(input)){input.forEach(function(el){var columns=el.trim().split(";");var $last_pair=$this.parent().parent().find(".pair").last();var $clone=$last_pair.clone().insertAfter($last_pair);if(columns.length===2){$clone.find("input.fs-name").val(columns[0]);$clone.find("input.fs-title").val(columns[1])}else if(columns.length===1){$clone.find("input.fs-title").val(columns[0])}})}}).on("click",".field .pairs .action-removeall",function(){if(confirm("Are you sure?")){$(this).parent().find(".pair").slice(1).remove()}}).on("click",".field .pair .action-delete",function(){var $pairs=$(this).closest(".pairs");if($pairs.children(".pair").length>1){if(confirm("Are you sure?")){$(this).closest(".pair").remove()}}else{alert("You cannot remove the last item!")}}).on("click",".field .header .action-delete",function(){if(confirm("Are you sure?")){var $target=$(this).closest("li");$target.fadeOut("slow",function(){$target.remove()})}}).on("click",".field .header .action-toggle",function(){var fieldBody=$(this).closest(".field").find(".body");fieldBody.slideToggle(300);$(this).toggleClass("dashicons-arrow-up-alt2");$(this).toggleClass("dashicons-arrow-down-alt2");if($(this).hasClass("dashicons-arrow-down-alt2")){$(this).parent().find(".name").text((fieldBody.find(".f-title").length?"- "+fieldBody.find(".f-title").val():"")+" {"+fieldBody.find(".f-name").val()+"}")}else{$(this).parent().find(".name").text("")}}).on("click","#add-field-button",function(e){e.preventDefault();var fieldType=$("#select-field").val();var id=$WK.addField(fieldType);$("html, body").animate({scrollTop:$("#"+id).offset().top-50},1e3)}).on("click",".expression_conditional .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#extra-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last condition!")}}).on("click",".expression_addon .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#addon-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last addon!")}}).on("click",".action-add-image",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this image"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();if($WK.wpMediaTarget.prop("tagName")==="A"){$WK.wpMediaTarget.next("img.wp-media-image-preview").attr("src",attachment.url);$WK.wpMediaTarget.next().next("input.wp-media-image-id").attr("value",attachment.id);$WK.wpMediaTarget.hide()}else{$WK.wpMediaTarget.attr("src",attachment.url);$WK.wpMediaTarget.next("input.wp-media-image-id").attr("value",attachment.id)}});$WK.wpMediaFrame.open()}).on("click",".action-add-attachment",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this file"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();$WK.wpMediaTarget.next("input.wp-media-attachment-id").val(attachment.id);$WK.wpMediaTarget.next().next("a.wp-media-attachment-preview").attr("href",attachment.url).text(attachment.url)});$WK.wpMediaFrame.open()}).on("focus",'[data-type="colorswatches"] input.fs-title',function(e){e.preventDefault();var _target=$(this);$WK.colorpicker.iris("show");$(".iris-picker").css({top:_target.offset().top+40,left:_target.offset().left});$WK.colorpicker.iris("option","change",function(event,ui){_target.val(ui.color.toString());var color=ui.color.toRgb();var t=(color.r+color.g+color.b)/2;var textColor=t<200?"#FFFFFF":"#000000";_target.css({"background-color":ui.color.toString(),color:textColor})});$WK.colorpicker.iris("color",$(this).val())}).on("click","input.allowed-extensions",function(){var field_id="#"+$(this).closest("li").attr("id");var ext=[];$(field_id+" input.allowed-extensions:checked").each(function(){ext.push($(this).data("extension"))});$(field_id+" input.fu-allowed-extensions").val(ext.join("|"))}).on("change","input.f-name",function(){var target=$(this);var newName=$(this).val().trim();if(newName!==""){$("#wck_fields_editor input.f-name").each(function(){if($(this).val()===newName&&!$(this).is(target)){alert("The name {"+newName+"} is already in use! Choose another name.");target.val("");return false}})}if($(this)[0].checkValidity()&&typeof $(this).data("lastValid")!=="undefined"){var oldName=$(this).data("lastValid");if(oldName!==newName){var oldNameInUse=false;$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){if($(this).val().includes(oldName)){oldNameInUse=true;return false}});if(oldNameInUse&&confirm("Wait! Seems like {"+oldName+"} is used in formulas! Do you want to replace {"+oldName+"} in all formulas? {"+oldName+"} will be changed to {"+newName+"}")){$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){$(this).val($(this).val().replaceAll("{"+oldName+"}","{"+newName+"}").replaceAll("{"+oldName+":","{"+newName+":").replaceAll('"field":"'+oldName+'"','"field":"'+newName+'"'))});$(this).data("lastValid",newName)}}}}).on("focusin","input.f-name",function(){if($(this)[0].checkValidity()){$(this).data("lastValid",$(this).val())}});$(".iris-square-value").on("click",function(e){e.preventDefault()});$(document).click(function(e){if(!$(e.target).closest('.iris-picker, [data-type="colorswatches"] input.fs-title').length){if($(".iris-picker").is(":visible")){$WK.colorpicker.iris("hide")}}});$("form#post").submit(function(e){$WK.saveFields();if(!$WK.saved){e.preventDefault();return false}$WK.saveExpression();if(!$WK.expr_saved&&$WK.expression.mode!=="off"){e.preventDefault();alert("Expression is required. Fill in required fields and try again!");return false}return true});$WK.init=function(){$WK.fieldList=$("#f-field-list");$WK.html=wck_fields_html;$WK.fields={};$WK.saved=false;$WK.expr_saved=false;$WK.counter=0;$WK.expression={mode:$("input.expression_type:checked").val()};$WK.loadJSONdata();$WK.showExpressionEditor();$WK.changeAssignType();$("form#post").attr("novalidate","");$WK.buildTooltips("");$WK.updateLayout();$("#wck-parameters .first-selected").prop("selected",true)};$WK.updateLayout=function(){if($WK.fieldsLayout==="two-col"){$WK.fieldList.addClass("layout-two-col")}else{$WK.fieldList.removeClass("layout-two-col")}};$WK.buildTooltips=function(selector){$(selector+"span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"})};$WK.changeAssignType=function(){var disabled=$("#assign_type").val()==="1";$("#assign_products, #assign_categories, #assign_tags, #assign_attributes").prop("disabled",disabled);$(".hide-if-disabled").toggle(!disabled)};$("#assign_type").on("change",$WK.changeAssignType);$WK.preloadMedia=function(id,callback){wp.media.attachment(id).fetch().then(function(){callback(wp.media.attachment(id))});return};$WK.addField=function(type){$WK.counter+=1;var id="wkfield-"+$WK.counter;$("li.welcome",$WK.fieldList).remove();$WK.fieldList.append($("
  • ",{"data-type":type,class:"form-invalid",id:id}).append($WK.html[type].replace("{id}",id)));$WK.buildTooltips("#"+id+" ");if($("#"+id).find(".pairs").length>0){$("#"+id+" .pairs").sortable({placeholder:"wck-sortable-placeholder",tolerance:"pointer"})}return id};$(window).on("beforeunload",function(){if($WK.saved===false){return""}});$WK.saveFields=function(){$WK.fields={};suggest=[];var error=$("li .field",$WK.fieldList).length===0;$("label.error").remove();$WK.saved=false;$("#wck-parameters .defined-fields").html("");$WK.appendGlobalParameters();if(error){alert("Please add at least one field before saving.");return false}$("li .field",$WK.fieldList).each(function(){var $row=$(this);var input_fname=$row.find("input.f-name");var input_ftitle=$row.find("input.f-title");var input_fhint=$row.find("input.f-hint");var input_default_value=$row.find("input.f-default-value");var input_css_class=$row.find("input.f-css-class");var field={type:$row.data("type"),use_expression:$row.data("use-expression")===true,name:input_fname.val(),title:input_ftitle.val(),hint:input_fhint.val(),default_value:input_default_value.val(),css_class:input_css_class.val(),layout:$WK.fieldsLayout,colspan:$row.find("input.f-colspan").val(),visibility:$row.find("input.f-visibility").val(),visibility_readable:$row.find("input.f-visibility-readable").val()};if($row.find("select.f-required").length>0){switch($row.find("select.f-required").val()){case"on":field.required="1";break;case"if-visible":field.required="2";break;case"off":field.required="0";break}}else{field.required="1"}var input_fprice=$row.find("input.f-price");if(input_fprice.length>0){field.price=input_fprice.val();if(field.price!==""){field.use_expression=true}}var input_fimgwidth=$row.find("input.fimg-width");if(input_fimgwidth.length>0){field.image_size=input_fimgwidth.val()}var $fs_options;switch(field.type){case"select":case"radio":case"imageselect":case"imageswatches":case"colorswatches":case"radiogroup":case"checkboxgroup":field.options_name=[];field.options_title=[];if(field.type==="imageselect"||field.type==="imageswatches"){field.options_image=[]}if(field.type==="checkboxgroup"){field.select_limit=$row.find("input.fcbg-limit").val()}$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var fs_name=$(this).find("input.fs-name");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_name.val()+":"+fs_title.val()}field.options_name.push(fs_name.val()+":"+fs_title.val());field.options_title.push(fs_title.val());if(field.type==="imageselect"||field.type==="imageswatches"){var fs_image=$(this).find("input.fs-image");field.options_image.push(fs_image.val())}});break;case"dropdown":field.options_title=[];$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_title.val()}field.options_title.push(fs_title.val())});break;case"number":var input_fnmin=$row.find("input.fn-min-value");field.min=input_fnmin.val();var input_fnmax=$row.find("input.fn-max-value");field.max=input_fnmax.val();break;case"checkbox":var input_fcb_default_state=$row.find("select.fcb-default-state");field.default_state=input_fcb_default_state.val()==="on";break;case"text":case"textarea":case"email":var input_ftminlen=$row.find("input.ft-min-length");var input_ftmaxlen=$row.find("input.ft-max-length");var input_ftpattern=$row.find("input.ft-pattern");field.min=input_ftminlen.val();field.max=input_ftmaxlen.val();if(input_ftpattern.length>0){field.pattern=input_ftpattern.val()}break;case"colorpicker":case"datepicker":case"rangedatepicker":var input_fdpdisallow_past_date=$row.find("input.fdp-disallow-past-date");field.disallow_past_date=input_fdpdisallow_past_date.is(":checked");break;case"imageupload":field.max_file_size=$row.find("input.fu-max-file-size").val();field.allowed_extensions=$row.find("input.fu-allowed-extensions").val();break;case"html":case"paragraph":case"hidden":case"attachment":field.content=$row.find(".fst-content").val();break;case"formula":field.content=$row.find(".fst-content").val();field.display_on_user_cart=$row.find(".fst-display-on-user-cart").val()==="on";break;case"link":field.content=$row.find(".fst-content").val();field.target=$row.find(".fst-target").val();break;case"heading":field.content=$row.find(".fst-content").val();field.level=$row.find(".fst-level").val();break}if(field.name!==""&&field.name in $WK.fields){error=true;alert("Field names must be unique! The '"+field.name+"' name is used more than once.")}if(!error){$WK.appendFormulaVars(field)}});var wkform=$("form#post");if(!wkform[0].checkValidity()){error=true;$("input:invalid").closest(".field").find(".action-toggle.dashicons-arrow-down-alt2").trigger("click");$("input:invalid").each(function(){$('").insertBefore($(this))})}if(error&&$("label.error").length){$("html, body").animate({scrollTop:$("label.error").first().offset().top-160},1e3)}$WK.saveJSONdata();$WK.saved=!error};$WK.appendGlobalParameters=function(){if(typeof wck_global_parameters!==undefined){$("#wck-parameters .global-parameters").html("");$.each(wck_global_parameters,function(name,value){var name="global:"+name;var appendChildren="";suggest.push(name);if(typeof value==="object"){$.each(value,function(k,v){var suffix="['"+k+"']";appendChildren=appendChildren+'"});value=""}else{value=" = "+value}$("#wck-parameters .global-parameters").append('");$("#wck-parameters .global-parameters").append(appendChildren)})}};$WK.appendFormulaVars=function(field){$WK.fields[field.name]=field;if(field.use_expression){if(field.type!=="checkboxgroup"){suggest.push(field.name);$("#wck-parameters .defined-fields").append('")}else{suggest.push(field.name);$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":sum");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":min");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":max");$("#wck-parameters .defined-fields").append('")}if(field.type==="text"||field.type==="textarea"){suggest.push(field.name+":text");$("#wck-parameters .defined-fields").append('")}if(field.type==="rangedatepicker"){suggest.push(field.name+":date_from");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":date_to");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":days");$("#wck-parameters .defined-fields").append('")}else if(field.type==="datepicker"){suggest.push(field.name+":date");$("#wck-parameters .defined-fields").append('")}else if(field.type==="imageupload"){suggest.push(field.name+":size");$("#wck-parameters .defined-fields").append('")}}};$WK.saveJSONdata=function(){if(Object.keys($WK.fields).length>0){$("input[name=_wck_fieldset]").val(JSON.stringify($WK.fields))}};$WK.loadJSONdata=function(){if(typeof wck_load_fieldset==="object"){var layoutLoaded=false;$.each(wck_load_fieldset,function(){if(!layoutLoaded){if(this.hasOwnProperty("layout")&&this.layout==="two-col"){$(".wck-toggle-layout").trigger("click")}layoutLoaded=true}var field_id=$WK.addField(this.type);var $field=$("#"+field_id+" .field");$("#"+field_id+" .f-name").val(this.name);if(this.hasOwnProperty("colspan")){$("#"+field_id+" .f-colspan").val(this.colspan);if(this.colspan==="2"){$("#"+field_id+" .wck-toggle-colspan").trigger("click")}}$("#"+field_id+" .f-title").val(this.title);$("#"+field_id+" .f-hint").val(this.hint);$("#"+field_id+" .f-css-class").val(this.css_class);if($("#"+field_id+" .f-required").length>0){$("#"+field_id+" .f-required").val(this.required==="1"?"on":this.required==="2"?"if-visible":"off")}if(this.hasOwnProperty("visibility")){$("#"+field_id+" .f-visibility").val(this.visibility);$("#"+field_id+" .f-visibility-readable").val(this.visibility_readable);if(this.visibility_readable!==""){$("#"+field_id+" .visibility-readable").val("Rule preview: "+this.visibility_readable)}}var fprice=$("#"+field_id+" .f-price");if(fprice.length>0){fprice.val(this.price)}var fimgwidth=$("#"+field_id+" .fimg-width");if(fimgwidth.length>0){fimgwidth.val(this.image_size)}var options_title,options_name,options_image,default_value,first,$checked;if(this.type==="dropdown"){options_title=this.options_title;default_value=this.default_value;first=true;$checked=null;$.each(options_title,function(i,option_title){if(first){var $first=$field.find(".fs-option");$first.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(["select","radio","imageselect","radiogroup","checkboxgroup","imageswatches","colorswatches"].indexOf(this.type)>=0){options_name=this.options_name;options_title=this.options_title;default_value=this.default_value;if(this.type==="imageselect"||this.type==="imageswatches"){options_image=this.options_image;wp.media.attachment(options_image).fetch()}if(this.type==="checkboxgroup"){$("#"+field_id+" .fcbg-limit").val(this.select_limit)}first=true;$checked=null;$.each(options_name,function(i,option_name){if(option_name.indexOf(":")>=0){option_name=option_name.slice(0,option_name.indexOf(":"))}if(first){var $first=$field.find(".fs-option");$first.find("input.fs-name").val(option_name);$first.find("input.fs-title").val(options_title[i]);var fs_image=$first.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$first.find("a.action-add-image").hide();$first.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$first.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-name").val(option_name);$clone.find("input.fs-title").val(options_title[i]);fs_image=$clone.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$clone.find("a.action-add-image").hide();$clone.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$clone.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(this.type==="number"){$("#"+field_id+" .fn-min-value").val(this.min);$("#"+field_id+" .fn-max-value").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value)}else if(this.type==="checkbox"){$("#"+field_id+" .fcb-default-state").val(this.default_state==="1"?"on":"off")}else if(this.type==="text"||this.type==="textarea"||this.type==="email"){$("#"+field_id+" .ft-min-length").val(this.min);$("#"+field_id+" .ft-max-length").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value);if(this.type==="text"){$("#"+field_id+" .ft-pattern").val(this.pattern)}}else if(this.type==="colorpicker"||this.type==="datepicker"||this.type==="rangedatepicker"){$("#"+field_id+" .fdp-disallow-past-date").prop("checked",this.disallow_past_date)}else if(this.type==="imageupload"){$("#"+field_id+" .fu-max-file-size").val(this.max_file_size);$("#"+field_id+" .fu-allowed-extensions").val(this.allowed_extensions);var ext=this.allowed_extensions.split("|");ext.forEach(function(e){$("#"+field_id+" .allowed-extensions.ext-"+e).prop("checked",true)})}else if(["html","paragraph","heading","hidden","link","attachment","formula"].indexOf(this.type)>=0){$("#"+field_id+" .fst-content").val(this.content);if(this.type==="heading"){$("#"+field_id+" .fst-level").val(this.level)}else if(this.type==="link"){$("#"+field_id+" .fst-target").val(this.target)}else if(this.type==="attachment"){$WK.preloadMedia(this.content,function(attachment){$("#"+field_id+" .wp-media-attachment-preview").attr("href",attachment.get("url")).text(attachment.get("url"))})}else if(this.type==="formula"){$("#"+field_id+" .fst-display-on-user-cart").val(this.display_on_user_cart==="1"?"on":"off")}}});$WK.saveFields()}};$WK.showExpressionEditor=function(){$("div.expression_oneline, div.expression_conditional, div.expression_off, div.expression_addon").hide();$("div.expression_"+$WK.expression.mode).show();if($WK.expression.mode==="off"){$(".off-hide").hide()}else{$(".off-hide").show()}};$("input.expression_type").on("change",function(){$WK.expression.mode=$(this).val();$WK.expressionLastFocusedInput=null;$WK.showExpressionEditor()});$WK.addCondition=function(if_value,then_value,addon=false){var $html=$('
    '+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    ');$(".input-if input",$html).val(if_value);$(".input-equation input",$html).val(then_value);if(addon===true){$("div#addon-inputs").append($html)}else{$("div#extra-inputs").append($html)}$WK.autocomplete()};$("button.add-condition").on("click",function(){$WK.addCondition()});$("button.add-addon").on("click",function(){$WK.addCondition("","",true)});$WK.autocomplete=function(){$(".input-icon input").bind("keydown",function(e){if(e.keyCode===16||e.keyCode===219){input_key_pressed[e.keyCode]=true}}).autocomplete({minLength:0,source:function(request,response){if(input_key_pressed[16]===true&&input_key_pressed[219]===true){response(suggest)}},focus:function(){return false},select:function(event,ui){delete input_key_pressed[16];delete input_key_pressed[219];this.value+=ui.item.value+"}";return false}})};$WK.saveExpression=function(){var mode=$WK.expression.mode;$WK.expr_saved=false;if(mode==="oneline"){$WK.expression.expr=$(".expression_oneline input").val();if($WK.expression.expr!==""){$WK.expr_saved=true}}if(mode==="conditional"){var data=[];$(".expression_conditional .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});var input_else=$(".expression_conditional .input-else input").val();data.push({type:"else",if:"true",then:input_else});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="addon"){var data=[];$(".expression_addon .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="off"){$("input[name=_wck_expression]").val("off")}else{$("input[name=_wck_expression]").val(JSON.stringify($WK.expression))}};$WK.loadExpression=function(){if(typeof wck_load_expression==="object"){$WK.expression.mode=wck_load_expression.mode;$WK.expression.expr=wck_load_expression.expr;if($WK.expression.mode==="oneline"){$(".expression_oneline input").val($WK.expression.expr);$("input[name=_wck_choose_expression_type].expression_oneline").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}else if($WK.expression.mode==="conditional"){$.each($WK.expression.expr,function(){if(this.type==="condition"){$WK.addCondition(this.if,this.then)}else if(this.type==="else"){$(".input-else input").val(this.then)}});$("input[name=_wck_choose_expression_type].expression_conditional").prop("checked",true);$WK.showExpressionEditor()}else if($WK.expression.mode==="addon"){$.each($WK.expression.expr,function(){$WK.addCondition(this.if,this.then,true)});$("input[name=_wck_choose_expression_type].expression_addon").prop("checked",true);$WK.showExpressionEditor()}}else{$WK.expression.mode="off";$("input[name=_wck_choose_expression_type].expression_off").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}};$("button.test-expression").on("click",function(){$WK.saveExpression()});$WK.toolbarOnTop=false;$(window).scroll(function(){if($(this).scrollTop()>100){if(!$WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=true;$("#wck-toolbar").css({top:"0px",bottom:"auto"}).fadeIn()})}}else if(!$("#postbox-container-2").hasClass("fullscreen")){if($WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=false;$("#wck-toolbar").css({top:"auto",bottom:"0px"}).fadeIn()})}}});$CV.window=$("#wck-cv-builder");$CV.builder=$CV.window.find(".builder");$CV.template=$CV.window.find(".template").children();$CV.context=null;$CV.open=function(context){$CV.context=context;var fieldSelect=$CV.template.find("select.p-field");fieldSelect.empty();$WK.saveFields();fieldSelect.append('');$.each($WK.fieldList.find(".field"),function(){if($(this).data("group")!=="static"&&!$(this).is(context)){var name=$(this).find(".f-name").val();fieldSelect.append('")}});$CV.builder.append($CV.template.clone());$CV.builder.find(".or-condition").remove();var loadData=$CV.context.find(".f-visibility").val();try{loadData=JSON.parse(loadData)}catch(e){loadData=false}if(typeof loadData==="object"){$.each(loadData,function(i,or_condition){var first=true;$.each(or_condition,function(j,and_condition){$CV.add(first?"or":"and",null,and_condition);first=false})})}else{$CV.add("or",null,null)}$CV.window.find("span.self-name").text(context.find(".f-name").val());$CV.window.show().css({display:"flex"})};$CV.close=function(){$CV.window.hide();$CV.builder.empty()};$CV.add=function(type,destination,values){if(destination===null){destination=$CV.builder.find("."+type+"-group").last()}destination.append($CV.window.find(".template ."+type+"-condition").clone());var newCondition=destination.find(".and-condition").last();if(values!==null&&typeof values==="object"){newCondition.find(".p-field").val(values.field);newCondition.find(".p-comparison").val(values.comp).trigger("change");newCondition.find(".p-value").val(values.value)}else{newCondition.find(".p-value").val("")}};$CV.validate=function(){var isValid=true;var conditions=$CV.builder.find(".and-condition");conditions.find(".validation-error").removeClass("validation-error");conditions.each(function(){var field=$(this).find(".p-field");var comp=$(this).find(".p-comparison").val();var value=$(this).find(".p-value");if([null,""].includes(field.val())){field.addClass("validation-error");isValid=false}if(!value.prop("disabled")&&value.val()===""){value.addClass("validation-error");isValid=false}if(["5","6","7","8"].includes(comp)&&!value.val().match(/^-?\d*[\.,]?\d+$/)){value.addClass("validation-error");isValid=false}if(comp==="9"&&value.val()===""){value.addClass("validation-error");isValid=false}});return isValid};$CV.window.on("click",".cv-action-and",function(e){e.preventDefault();$CV.add("and",$(this).prev(),null)});$CV.window.on("click",".cv-action-or",function(e){e.preventDefault();$CV.add("or",$(this).prev(),null)});$CV.window.on("click",".cv-remove",function(e){e.preventDefault();var count=$(this).closest(".and-group").children().length;if(count===1){$(this).closest(".or-condition").remove()}else{$(this).parent().remove()}});$CV.window.on("change","select.p-comparison",function(e){var disabled=["1","2"].includes($(this).val());var pVal=$(this).next(".p-value");pVal.prop("disabled",disabled);if(disabled){pVal.val("")}});$CV.window.on("click",".cv-close",function(e){e.preventDefault();$CV.close()});$CV.window.on("click",".cv-save",function(e){e.preventDefault();if(!$CV.validate()){alert("Please correct the form!");return false}var or_conditions=[];var or_readable=[];$.each($CV.builder.find(".or-condition"),function(){var and_conditions=[];var and_readable=[];$.each($(this).find(".and-condition"),function(){var item={field:$(this).find(".p-field").val(),comp:$(this).find(".p-comparison").val(),comp_text:$(this).find(".p-comparison option:selected").text(),value:$(this).find(".p-value").val()};and_conditions.push(item);and_readable.push("{"+item.field+"} "+item.comp_text+" "+item.value)});or_conditions.push(and_conditions);or_readable.push(" ( "+and_readable.join(" and ")+" ) ")});var readable=or_readable.join(" or ").replaceAll(" "," ");$CV.context.find(".f-visibility").val(or_conditions.length===0?"":JSON.stringify(or_conditions));$CV.context.find(".f-visibility-readable").val(readable);if(readable!==""){$CV.context.find(".visibility-readable").val("Rule preview: "+readable)}else{$CV.context.find(".visibility-readable").val("")}$CV.close()});$("body").on("click",".action-field-visibility",function(){var context=$(this).closest(".field");$CV.open(context)});$WK.init();$WK.loadExpression();$WK.autocomplete()})})(jQuery); \ No newline at end of file diff --git a/src/Fields/AbstractField.php b/src/Fields/AbstractField.php index 3580992..4b94220 100644 --- a/src/Fields/AbstractField.php +++ b/src/Fields/AbstractField.php @@ -69,8 +69,9 @@ public function prepared_data() 'name' => "wck[" . $this->data("name") . "]", 'id' => 'wck_' . $this->data("name"), 'css_class' => $this->data("css_class"), - 'required' => $this->is_required() ? ' required' : '', - 'is_required' => $this->is_required() ? '1' : '0' + 'required' => ($this->is_required() || $this->is_required_when_visible() ? ' required' : ''), + 'is_required' => $this->is_required() ? '1' : '0', + 'show_required_asterisk' => $this->is_required() || $this->is_required_when_visible() ); } @@ -108,13 +109,21 @@ public function html_hint() return ''; return ''; } - + /** * @return mixed */ public function is_required() { - return ($this->group() === 'static' || $this->type() === 'formula') ? false : $this->data["required"]; + return !($this->group() === 'static' || $this->type() === 'formula') && $this->data["required"] === '1'; + } + + /** + * @return mixed + */ + public function is_required_when_visible() + { + return $this->data["required"] === '2'; } /** diff --git a/src/FieldsetProduct.php b/src/FieldsetProduct.php index 33bacd8..988ea75 100644 --- a/src/FieldsetProduct.php +++ b/src/FieldsetProduct.php @@ -822,17 +822,6 @@ public function visibility_rules() return $rules; } - /** - * Return user input array - * - * @return array - * @since 1.4.7 - */ - public function user_input() - { - return $this->user_input; - } - /** * Cannot clone singleton * diff --git a/src/Sanitizer.php b/src/Sanitizer.php index 125eda5..de93200 100644 --- a/src/Sanitizer.php +++ b/src/Sanitizer.php @@ -221,7 +221,7 @@ private static function sanitize_array($array, $depth = 1) * * @param array $array * @return array - * @since + * @since 1.1.0 */ private static function sanitize_single_array_text($array) { diff --git a/views/fields/admin/checkbox.php b/views/fields/admin/checkbox.php index 8233cc0..8d024e7 100644 --- a/views/fields/admin/checkbox.php +++ b/views/fields/admin/checkbox.php @@ -19,7 +19,8 @@
  • diff --git a/views/fields/admin/colorpicker.php b/views/fields/admin/colorpicker.php index 95734c3..8762d70 100644 --- a/views/fields/admin/colorpicker.php +++ b/views/fields/admin/colorpicker.php @@ -9,7 +9,8 @@
    diff --git a/views/fields/admin/datepicker.php b/views/fields/admin/datepicker.php index 940e4d4..ebe50f0 100644 --- a/views/fields/admin/datepicker.php +++ b/views/fields/admin/datepicker.php @@ -9,7 +9,8 @@ diff --git a/views/fields/admin/dropdown.php b/views/fields/admin/dropdown.php index e77eb46..bc1b67a 100644 --- a/views/fields/admin/dropdown.php +++ b/views/fields/admin/dropdown.php @@ -9,7 +9,8 @@ diff --git a/views/fields/admin/fileupload.php b/views/fields/admin/fileupload.php index bf2af30..9266a99 100644 --- a/views/fields/admin/fileupload.php +++ b/views/fields/admin/fileupload.php @@ -9,7 +9,8 @@ diff --git a/views/fields/admin/imageupload.php b/views/fields/admin/imageupload.php index 1cd35a3..bbb1097 100644 --- a/views/fields/admin/imageupload.php +++ b/views/fields/admin/imageupload.php @@ -11,7 +11,8 @@ diff --git a/views/fields/admin/number.php b/views/fields/admin/number.php index 64f3769..fc11ed2 100644 --- a/views/fields/admin/number.php +++ b/views/fields/admin/number.php @@ -31,7 +31,8 @@
    diff --git a/views/fields/admin/select.php b/views/fields/admin/select.php index c94b06a..60a8298 100644 --- a/views/fields/admin/select.php +++ b/views/fields/admin/select.php @@ -9,7 +9,8 @@ diff --git a/views/fields/admin/text.php b/views/fields/admin/text.php index c59db9d..46352a5 100644 --- a/views/fields/admin/text.php +++ b/views/fields/admin/text.php @@ -12,7 +12,8 @@
    diff --git a/views/fields/front/checkbox.php b/views/fields/front/checkbox.php index e718d6e..79af4c9 100644 --- a/views/fields/front/checkbox.php +++ b/views/fields/front/checkbox.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/checkboxgroup.php b/views/fields/front/checkboxgroup.php index 1a51d32..015accf 100644 --- a/views/fields/front/checkboxgroup.php +++ b/views/fields/front/checkboxgroup.php @@ -12,7 +12,7 @@ select_limit) > 0): ?> select_limit)); ?> - is_required) && $view->is_required) : ?> + show_required_asterisk) && $view->show_required_asterisk) : ?> * diff --git a/views/fields/front/colorpicker.php b/views/fields/front/colorpicker.php index 7eb04ad..6b5c369 100644 --- a/views/fields/front/colorpicker.php +++ b/views/fields/front/colorpicker.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/colorswatches.php b/views/fields/front/colorswatches.php index 021c6a6..940e3e5 100644 --- a/views/fields/front/colorswatches.php +++ b/views/fields/front/colorswatches.php @@ -17,7 +17,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/datepicker.php b/views/fields/front/datepicker.php index 2048662..7077404 100644 --- a/views/fields/front/datepicker.php +++ b/views/fields/front/datepicker.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/dropdown.php b/views/fields/front/dropdown.php index db3101e..132ee76 100644 --- a/views/fields/front/dropdown.php +++ b/views/fields/front/dropdown.php @@ -9,7 +9,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/email.php b/views/fields/front/email.php index 0ff15ed..01a694c 100644 --- a/views/fields/front/email.php +++ b/views/fields/front/email.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/fileupload.php b/views/fields/front/fileupload.php index 78bcaf9..e4658da 100644 --- a/views/fields/front/fileupload.php +++ b/views/fields/front/fileupload.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/imageselect.php b/views/fields/front/imageselect.php index 85c0bf3..9188a8a 100644 --- a/views/fields/front/imageselect.php +++ b/views/fields/front/imageselect.php @@ -16,7 +16,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/imageupload.php b/views/fields/front/imageupload.php index a9e8cd9..b7ecb14 100644 --- a/views/fields/front/imageupload.php +++ b/views/fields/front/imageupload.php @@ -9,7 +9,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/number.php b/views/fields/front/number.php index 3abfe62..b16c52d 100644 --- a/views/fields/front/number.php +++ b/views/fields/front/number.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/radio.php b/views/fields/front/radio.php index de15289..37a0ce4 100644 --- a/views/fields/front/radio.php +++ b/views/fields/front/radio.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/rangedatepicker.php b/views/fields/front/rangedatepicker.php index ce00ba1..9f45aa4 100644 --- a/views/fields/front/rangedatepicker.php +++ b/views/fields/front/rangedatepicker.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/select.php b/views/fields/front/select.php index f1444dc..66a579d 100644 --- a/views/fields/front/select.php +++ b/views/fields/front/select.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/text.php b/views/fields/front/text.php index 7c69ccc..d78d12c 100644 --- a/views/fields/front/text.php +++ b/views/fields/front/text.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> diff --git a/views/fields/front/textarea.php b/views/fields/front/textarea.php index 11d8ae3..5cb96ac 100644 --- a/views/fields/front/textarea.php +++ b/views/fields/front/textarea.php @@ -8,7 +8,7 @@ hint, \WCKalkulator\Sanitizer::allowed_html()); ?> From a3d34ee15556b7eda9d30a11ef0dd2dafc135962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Pi=C4=85tkowski?= Date: Fri, 12 Aug 2022 08:46:20 +0200 Subject: [PATCH 7/8] v1.5 --- assets/css/admin.css | 3 + assets/css/admin.css.map | 2 +- assets/css/admin.min.css | 2 +- assets/css/admin.nav.css | 32 ++++ assets/css/admin.nav.css.map | 1 + assets/css/admin.nav.min.css | 1 + assets/css/admin.nav.sass | 29 +++ assets/css/admin.sass | 2 + assets/js/admin-fieldset-post-type.min.js | 2 +- assets/js/admin.js | 1 + assets/js/admin.min.js | 2 +- assets/js/colorpicker.min.js | 2 +- assets/js/datepicker.min.js | 2 +- assets/js/deactivation.js | 10 + assets/js/deactivation.min.js | 1 + assets/js/javascript.cm.js | 171 +++++++++++++++++ assets/js/javascript.cm.min.js | 1 + assets/js/notice.min.js | 2 +- assets/js/rangedatepicker.min.js | 2 +- assets/js/wckalkulator.js | 14 +- assets/js/wckalkulator.min.js | 2 +- docs/.retype/404.html | 10 +- docs/.retype/changelog/index.html | 39 +++- docs/.retype/index.html | 26 ++- docs/.retype/news/index.html | 10 +- docs/.retype/resources/js/config.js | 2 +- docs/.retype/resources/js/search.json | 2 +- docs/.retype/sitemap.xml.gz | Bin 493 -> 512 bytes docs/.retype/usermanual/about/index.html | 10 +- .../usermanual/advanced_usage/index.html | 10 +- .../usermanual/calculation-types/index.html | 10 +- .../usermanual/example-expressions/index.html | 10 +- .../usermanual/expression-syntax/index.html | 10 +- docs/.retype/usermanual/fields/index.html | 19 +- .../usermanual/import_export/index.html | 10 +- .../usermanual/installation/index.html | 10 +- docs/.retype/usermanual/templates/index.html | 16 +- docs/.retype/usermanual/uninstall/index.html | 10 +- docs/.retype/usermanual/usage/index.html | 10 +- docs/.retype/usermanual/videos/index.html | 10 +- docs/changelog.md | 2 +- docs/images/acf1.png | Bin 0 -> 123545 bytes docs/images/acf2.png | Bin 0 -> 67416 bytes docs/index.md | 21 ++- docs/retype.yml | 2 +- docs/usermanual/acf.md | 27 +++ readme.md | 19 +- src/AdminNotice.php | 13 +- src/Ajax.php | 25 +-- src/ExpressionParser.php | 13 +- src/Fields/AbstractField.php | 11 +- src/FieldsetPostType.php | 79 ++++++-- src/FieldsetProduct.php | 39 +++- src/GlobalParametersPostType.php | 26 ++- src/Integrations/ACF.php | 31 +++ src/Settings.php | 22 ++- src/Woocommerce/Attribute.php | 178 ++++++++++++++++++ src/Woocommerce/Product.php | 13 +- views/admin/expression.php | 20 +- views/admin/javascript.php | 16 ++ views/admin/navigation.php | 21 +++ views/fields/cart.php | 18 +- wc-kalkulator.php | 64 ++++++- 63 files changed, 982 insertions(+), 186 deletions(-) create mode 100644 assets/css/admin.nav.css create mode 100644 assets/css/admin.nav.css.map create mode 100644 assets/css/admin.nav.min.css create mode 100644 assets/css/admin.nav.sass create mode 100644 assets/js/deactivation.js create mode 100644 assets/js/deactivation.min.js create mode 100644 assets/js/javascript.cm.js create mode 100644 assets/js/javascript.cm.min.js create mode 100644 docs/images/acf1.png create mode 100644 docs/images/acf2.png create mode 100644 docs/usermanual/acf.md create mode 100644 src/Integrations/ACF.php create mode 100644 src/Woocommerce/Attribute.php create mode 100644 views/admin/javascript.php create mode 100644 views/admin/navigation.php diff --git a/assets/css/admin.css b/assets/css/admin.css index 3b98312..c595d3b 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -19,6 +19,9 @@ .wc-kalkulator-wrapper a.button.action-add-attachment { margin-bottom: 10px; } +.wc-kalkulator-wrapper .lh-5 { + line-height: 5; +} .wc-kalkulator-wrapper ul#f-field-list { width: 100%; } diff --git a/assets/css/admin.css.map b/assets/css/admin.css.map index a4951da..fea22db 100644 --- a/assets/css/admin.css.map +++ b/assets/css/admin.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["admin.sass"],"names":[],"mappings":"AAAA;EACE;EACA;;;AAGA;EACE;;AAGA;EACE;;AAIA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEN;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;AAEJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;EACA;;AAGE;EACE;EACA;EACA;;AAEN;EACE;EACA;;AAGE;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAEN;EACE;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;AAEF;AAAA;EAEE;EACA;;AAEF;EACE;EACA;EACA;;AAGA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAIA;EACE;;AAIF;EACE;;AAGJ;EACE;;AAEJ;EACE;;AAIE;EACE;;AAEN;EACE;EACA;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;;AAEA;EACE;;AAEN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;;AAEN;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;;AAGN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;;AAER;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAdA;EACE;;AAeF;EACE;;AAEF;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEA;EACE;;AAEF;EACE;;AAEF;EACE;;AAEJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;;AAEJ;EACE;;AAEA;EACE","file":"admin.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["admin.sass"],"names":[],"mappings":"AAAA;EACE;EACA;;;AAGA;EACE;;AAGA;EACE;;AAIA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;;AACN;EACE;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;AAEJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;EACA;;AAGE;EACE;EACA;EACA;;AAEN;EACE;EACA;;AAGE;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAEN;EACE;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;AAEF;AAAA;EAEE;EACA;;AAEF;EACE;EACA;EACA;;AAGA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEN;EACE;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAIA;EACE;;AAIF;EACE;;AAGJ;EACE;;AAEJ;EACE;;AAIE;EACE;;AAEN;EACE;EACA;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;;AAEA;EACE;;AAEN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAEA;EACE;;AAEN;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;;AAGN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;;AAER;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAdA;EACE;;AAeF;EACE;;AAEF;EACE;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;;AAEA;EACE;;AAEF;EACE;;AAEF;EACE;;AAEJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAEJ;EACE;EACA;;AAEF;EACE;EACA;EACA;;AAEJ;EACE;;AAEF;EACE;EACA;EACA;;;AAEJ;EACE;;AAEA;EACE","file":"admin.css"} \ No newline at end of file diff --git a/assets/css/admin.min.css b/assets/css/admin.min.css index 57e2320..06d44d6 100644 --- a/assets/css/admin.min.css +++ b/assets/css/admin.min.css @@ -1 +1 @@ -::-moz-placeholder,::-webkit-input-placeholder,::placeholder{color:#9b9b9b!important;font-size:12px!important}.wc-kalkulator-wrapper html{scroll-padding-top:100px}.wc-kalkulator-wrapper p.add-buttons{line-height:36px}.wc-kalkulator-wrapper a.button.action-add-image{margin-bottom:20px;margin-top:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper a.button.action-add-attachment{margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list{width:100%}.wc-kalkulator-wrapper ul#f-field-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;padding:22px}.wc-kalkulator-wrapper ul#f-field-list li{box-shadow:0 5px 10px #ccc;margin-bottom:5px}.wc-kalkulator-wrapper ul#f-field-list li.welcome{box-shadow:none;padding:30px;text-align:center;font-size:16px;border:1px dashed #aaa;margin:30px}.wc-kalkulator-wrapper ul#f-field-list li .field{border:1px solid #aaa;background-color:#fff}.wc-kalkulator-wrapper ul#f-field-list li .field .header{background-color:#f5f5f5;padding:8px;cursor:move}.wc-kalkulator-wrapper ul#f-field-list li .field .header .text{font-size:14px;color:#000;padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .header .name{padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .body{padding:20px;border-top:1px solid #aaa}.wc-kalkulator-wrapper ul#f-field-list li .field .body .half{float:left;width:50%;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{float:left;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .last,.wc-kalkulator-wrapper ul#f-field-list li .field .body .second{padding-left:10px;padding-right:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .first{padding-right:10px;padding-left:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{width:33%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .fu-allowed-extensions{margin-top:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body label{font-size:12px;margin-bottom:3px;font-weight:700}.wc-kalkulator-wrapper ul#f-field-list li .field .body label.error{background-color:#e30000;color:#fff;padding:6px;margin:6px 0;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair{display:flex;align-items:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair span.dashicons-no-alt{cursor:pointer;font-size:28px;color:red}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs{margin-top:20px;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .pair:not(:first-child) label{display:none}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs button{margin-right:6px;margin-bottom:6px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer{display:none;margin-top:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer textarea{display:block;width:100%;min-height:200px;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column{float:left}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1{width:40%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-half{width:20%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2{width:40%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2-half{text-align:center;width:20%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-2{width:80%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-3{width:10%;padding-left:20px;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-4{width:10%;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .clear{clear:both}.wc-kalkulator-wrapper .input-group .dashicons,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons{padding:3px;margin-left:2px;margin-right:2px;cursor:pointer;color:#555;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .dashicons.action-drag,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons.action-drag{cursor:move;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .left,.wc-kalkulator-wrapper ul#f-field-list li .field .header .left{float:left}.wc-kalkulator-wrapper .input-group .right,.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{float:right}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]),.wc-kalkulator-wrapper ul#f-field-list li .field .body label{display:block;width:100%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]).inline,.wc-kalkulator-wrapper ul#f-field-list li .field .body label.inline{display:inline-block;margin-right:10px;width:auto;line-height:2;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param.fdp-disallow-past-date,.wc-kalkulator-wrapper ul#f-field-list li .field .body .param[type=checkbox]{margin:10px 15px 14px 3px}.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=number].param,.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=text].param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=number],.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=text]{border:1px solid #aaa;border-radius:0;padding:5px 10px;width:100%;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body select.param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper .clearfix,.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair:after{content:"";display:block;clear:both}.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan,.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan-label{display:none}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li{width:49.4%;display:inline-block;margin:.25%;vertical-align:top}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li.wck-layout-colspan{width:99.25%}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan{display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;margin-top:4px;cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan-label{display:block;line-height:2.2em;font-size:12px;padding-right:6px}.wc-kalkulator-wrapper .pr-20{padding-right:20px}.wc-kalkulator-wrapper .input-icon{position:relative;font-family:monospace;width:100%;margin:10px 0 15px}.wc-kalkulator-wrapper .input-icon i{font-family:monospace;font-size:13px;position:absolute;display:block;top:11px;pointer-events:none;width:50px;text-align:right;font-style:normal;color:#00f}.wc-kalkulator-wrapper .input-icon input{border:1px solid #aaa;border-radius:0;padding:5px 10px 5px 55px;width:100%}.wc-kalkulator-wrapper .input-if i::after{content:"if"}.wc-kalkulator-wrapper .input-equation i::after{content:"price"}.wc-kalkulator-wrapper .input-stock i::after{content:"qty * "}.wc-kalkulator-wrapper #addon-inputs .input-equation i::after{content:"add"}.wc-kalkulator-wrapper .input-else i::after{content:"else"}.wc-kalkulator-wrapper .input-group{padding:8px;background-color:#eee;margin-bottom:5px}.wc-kalkulator-wrapper .ui-autocomplete-loading{background-image:none!important}.wc-kalkulator-wrapper .wc-category-search,.wc-kalkulator-wrapper .wc-enhanced-select,.wc-kalkulator-wrapper .wc-page-search,.wc-kalkulator-wrapper .wc-product-search{width:100%}.wc-kalkulator-wrapper button.add-operator{margin-right:3px}.wc-kalkulator-wrapper span.formula-field{padding-left:6px;cursor:pointer;font-weight:700}.wc-kalkulator-wrapper span.formula-field:hover{text-decoration:underline}.wc-kalkulator-wrapper .wp-media-image-preview{max-width:80px;max-height:80px;cursor:pointer}.wc-kalkulator-wrapper .wp-media-image-preview:hover{transform:scale(1.2);-moz-transform:scale(1.2);-webkit-transform:scale(1.2)}.wc-kalkulator-wrapper select.param{margin-bottom:20px}.wc-kalkulator-wrapper .iris-picker{position:absolute;z-index:9999}.wc-kalkulator-wrapper .fields-section{text-align:center;padding:50px;margin:0 auto;max-width:500px}.wc-kalkulator-wrapper .fields-section button,.wc-kalkulator-wrapper .fields-section select{font-size:16px}.wc-kalkulator-wrapper .fields-section select{width:300px;padding:5px 10px}.wc-kalkulator-wrapper .fields-section button{width:50px;padding:3px 8px}.wc-kalkulator-wrapper .fields-section button span{line-height:2}#wck-toolbar,.wc-kalkulator-wrapper .align-right{text-align:right}.wc-kalkulator-wrapper .wck-toggle-expand,.wc-kalkulator-wrapper .wck-toggle-layout{cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{opacity:0}#wck-cv-builder .builder .and-condition:hover .cv-remove,.wc-kalkulator-wrapper ul#f-field-list li .field:hover .header .right{opacity:1}.wc-kalkulator-wrapper #wck_expression .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;height:60px;margin-bottom:3px}.wc-kalkulator-wrapper #wck_expression .input-group .input-equation,.wc-kalkulator-wrapper #wck_expression .input-group .input-if{float:left;width:46%;margin:0 .5%}.wc-kalkulator-wrapper #wck_expression .input-group .input-buttons{float:left;width:2.5%;padding-top:5px}.wc-kalkulator-wrapper .inventory label{font-size:15px;margin:55px 0 10px;border-top:1px solid #c3c4c7;display:block;border-bottom:1px solid #c3c4c7;padding:10px 0 10px 5px}.wc-kalkulator-wrapper .cv-container{position:relative}.wc-kalkulator-wrapper .cv-container .action-field-visibility{position:absolute;right:5px;top:5px}.wc-kalkulator-wrapper .cv-container .visibility-readable{background-color:#fff}#postbox-container-2.fullscreen{position:fixed;z-index:999999;left:0;top:0;right:0;bottom:0;margin:0;background-color:#fff;overflow-y:scroll}#postbox-container-2.fullscreen #advanced-sortables,#postbox-container-2.fullscreen #normal-sortables{padding:20px}#wck-toolbar{position:fixed;bottom:0;left:0;right:0;z-index:9999999;background:#f5f5f5;border-top:1px solid #aaa;padding:10px 20px;box-shadow:0 0 45px #000}#wck-toolbar .wck-toggle-fullscreen{cursor:pointer}#wck-toolbar ul{margin:0}#wck-toolbar ul li{margin-bottom:0;display:inline-block}#wck-toolbar ul li,#wck-toolbar ul li li>*{vertical-align:middle}#wck-toolbar ul li.space{width:10px}#wck-expression-toolbar{display:none;position:absolute;top:0;border:1px solid #888;border-radius:5px;box-shadow:0 0 50px rgba(0,0,0,.5);padding:10px 20px;background-color:#fff;margin:0;width:360px;vertical-align:middle;text-align:justify;z-index:999999;tab-index:0}#wck-expression-toolbar *{tab-index:0}#wck-expression-toolbar .button{margin-bottom:6px}#wck-expression-toolbar select{width:270px}#wck-cv-builder{overflow:none;display:none;border-radius:3px;position:fixed;z-index:99999999;top:150px;left:50%;margin-left:-500px;bottom:150px;width:1000px;background-color:#fff;box-shadow:0 0 200px 100px rgba(0,0,0,.4);flex-direction:column}#wck-cv-builder .template{display:none;visibility:hidden}#wck-cv-builder .builder{flex-basis:100%;margin:20px 40px 0 5px;overflow-y:auto}#wck-cv-builder .builder .or-group{width:100%}#wck-cv-builder .builder .and-condition{display:flex;gap:3px;margin-bottom:3px}#wck-cv-builder .builder .and-condition .validation-error{border-color:red}#wck-cv-builder .builder .and-condition button{margin-bottom:3px}#wck-cv-builder .builder .and-condition .p-value{flex-grow:2}#wck-cv-builder .builder .or-condition{display:flex;flex-direction:row;align-content:stretch;gap:3px;flex-wrap:wrap}#wck-cv-builder .builder .or-condition:not(:first-child)::before{content:"OR";flex-basis:100%;display:block;font-weight:700;padding:10px;margin-left:25px}#wck-cv-builder .builder .and-group{flex-grow:4}#wck-cv-builder .builder .cv-remove{text-decoration:none;opacity:0;padding:5px}#wck-cv-builder .builder .cv-remove span{font-size:14px;line-height:1}#wck-cv-builder .builder .cv-action-and{align-self:end;margin-bottom:3px}#wck-cv-builder .builder .cv-action-or{display:block;margin-top:10px;margin-left:33px}#wck-cv-builder h1{padding:40px 40px 0}#wck-cv-builder p.save{padding:10px 20px 0;text-align:right;border-top:1px solid #ccc}.postbox.closed{border:1px solid #c3c4c7}.postbox.closed .inside{display:block} \ No newline at end of file +::-moz-placeholder,::-webkit-input-placeholder,::placeholder{color:#9b9b9b!important;font-size:12px!important}.wc-kalkulator-wrapper html{scroll-padding-top:100px}.wc-kalkulator-wrapper p.add-buttons{line-height:36px}.wc-kalkulator-wrapper a.button.action-add-image{margin-bottom:20px;margin-top:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper a.button.action-add-attachment{margin-bottom:10px}.wc-kalkulator-wrapper .lh-5{line-height:5}.wc-kalkulator-wrapper ul#f-field-list{width:100%}.wc-kalkulator-wrapper ul#f-field-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;padding:22px}.wc-kalkulator-wrapper ul#f-field-list li{box-shadow:0 5px 10px #ccc;margin-bottom:5px}.wc-kalkulator-wrapper ul#f-field-list li.welcome{box-shadow:none;padding:30px;text-align:center;font-size:16px;border:1px dashed #aaa;margin:30px}.wc-kalkulator-wrapper ul#f-field-list li .field{border:1px solid #aaa;background-color:#fff}.wc-kalkulator-wrapper ul#f-field-list li .field .header{background-color:#f5f5f5;padding:8px;cursor:move}.wc-kalkulator-wrapper ul#f-field-list li .field .header .text{font-size:14px;color:#000;padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .header .name{padding:5px}.wc-kalkulator-wrapper ul#f-field-list li .field .body{padding:20px;border-top:1px solid #aaa}.wc-kalkulator-wrapper ul#f-field-list li .field .body .half{float:left;width:50%;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{float:left;padding-left:10px;padding-right:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .last,.wc-kalkulator-wrapper ul#f-field-list li .field .body .second{padding-left:10px;padding-right:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .first{padding-right:10px;padding-left:0}.wc-kalkulator-wrapper ul#f-field-list li .field .body .third{width:33%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .fu-allowed-extensions{margin-top:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body label{font-size:12px;margin-bottom:3px;font-weight:700}.wc-kalkulator-wrapper ul#f-field-list li .field .body label.error{background-color:#e30000;color:#fff;padding:6px;margin:6px 0;box-sizing:border-box}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair{display:flex;align-items:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair span.dashicons-no-alt{cursor:pointer;font-size:28px;color:red}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs{margin-top:20px;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .pair:not(:first-child) label{display:none}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs button{margin-right:6px;margin-bottom:6px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer{display:none;margin-top:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pairs .importer textarea{display:block;width:100%;min-height:200px;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column{float:left}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1{width:40%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-half{width:20%;padding-right:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2{width:40%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-2-half{text-align:center;width:20%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-1-2{width:80%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-3{width:10%;padding-left:20px;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .field .body .column-4{width:10%;text-align:center}.wc-kalkulator-wrapper ul#f-field-list li .clear{clear:both}.wc-kalkulator-wrapper .input-group .dashicons,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons{padding:3px;margin-left:2px;margin-right:2px;cursor:pointer;color:#555;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .dashicons.action-drag,.wc-kalkulator-wrapper ul#f-field-list li .field .header .dashicons.action-drag{cursor:move;font-size:16px;line-height:1.5}.wc-kalkulator-wrapper .input-group .left,.wc-kalkulator-wrapper ul#f-field-list li .field .header .left{float:left}.wc-kalkulator-wrapper .input-group .right,.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{float:right}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]),.wc-kalkulator-wrapper ul#f-field-list li .field .body label{display:block;width:100%}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param:not([type=checkbox]).inline,.wc-kalkulator-wrapper ul#f-field-list li .field .body label.inline{display:inline-block;margin-right:10px;width:auto;line-height:2;margin-bottom:20px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .param.fdp-disallow-past-date,.wc-kalkulator-wrapper ul#f-field-list li .field .body .param[type=checkbox]{margin:10px 15px 14px 3px}.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=number].param,.wc-kalkulator-wrapper ul#f-field-list li .field .body input[type=text].param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=number],.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair input[type=text]{border:1px solid #aaa;border-radius:0;padding:5px 10px;width:100%;margin-bottom:10px}.wc-kalkulator-wrapper ul#f-field-list li .field .body select.param{margin-bottom:20px;border:1px solid #aaa;border-radius:0;padding:5px 10px}.wc-kalkulator-wrapper .clearfix,.wc-kalkulator-wrapper ul#f-field-list li .field .body .pair:after{content:"";display:block;clear:both}.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan,.wc-kalkulator-wrapper ul#f-field-list li .header .wck-toggle-colspan-label{display:none}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li{width:49.4%;display:inline-block;margin:.25%;vertical-align:top}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col li.wck-layout-colspan{width:99.25%}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan{display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;margin-top:4px;cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list.layout-two-col .header .wck-toggle-colspan-label{display:block;line-height:2.2em;font-size:12px;padding-right:6px}.wc-kalkulator-wrapper .pr-20{padding-right:20px}.wc-kalkulator-wrapper .input-icon{position:relative;font-family:monospace;width:100%;margin:10px 0 15px}.wc-kalkulator-wrapper .input-icon i{font-family:monospace;font-size:13px;position:absolute;display:block;top:11px;pointer-events:none;width:50px;text-align:right;font-style:normal;color:#00f}.wc-kalkulator-wrapper .input-icon input{border:1px solid #aaa;border-radius:0;padding:5px 10px 5px 55px;width:100%}.wc-kalkulator-wrapper .input-if i::after{content:"if"}.wc-kalkulator-wrapper .input-equation i::after{content:"price"}.wc-kalkulator-wrapper .input-stock i::after{content:"qty * "}.wc-kalkulator-wrapper #addon-inputs .input-equation i::after{content:"add"}.wc-kalkulator-wrapper .input-else i::after{content:"else"}.wc-kalkulator-wrapper .input-group{padding:8px;background-color:#eee;margin-bottom:5px}.wc-kalkulator-wrapper .ui-autocomplete-loading{background-image:none!important}.wc-kalkulator-wrapper .wc-category-search,.wc-kalkulator-wrapper .wc-enhanced-select,.wc-kalkulator-wrapper .wc-page-search,.wc-kalkulator-wrapper .wc-product-search{width:100%}.wc-kalkulator-wrapper button.add-operator{margin-right:3px}.wc-kalkulator-wrapper span.formula-field{padding-left:6px;cursor:pointer;font-weight:700}.wc-kalkulator-wrapper span.formula-field:hover{text-decoration:underline}.wc-kalkulator-wrapper .wp-media-image-preview{max-width:80px;max-height:80px;cursor:pointer}.wc-kalkulator-wrapper .wp-media-image-preview:hover{transform:scale(1.2);-moz-transform:scale(1.2);-webkit-transform:scale(1.2)}.wc-kalkulator-wrapper select.param{margin-bottom:20px}.wc-kalkulator-wrapper .iris-picker{position:absolute;z-index:9999}.wc-kalkulator-wrapper .fields-section{text-align:center;padding:50px;margin:0 auto;max-width:500px}.wc-kalkulator-wrapper .fields-section button,.wc-kalkulator-wrapper .fields-section select{font-size:16px}.wc-kalkulator-wrapper .fields-section select{width:300px;padding:5px 10px}.wc-kalkulator-wrapper .fields-section button{width:50px;padding:3px 8px}.wc-kalkulator-wrapper .fields-section button span{line-height:2}#wck-toolbar,.wc-kalkulator-wrapper .align-right{text-align:right}.wc-kalkulator-wrapper .wck-toggle-expand,.wc-kalkulator-wrapper .wck-toggle-layout{cursor:pointer}.wc-kalkulator-wrapper ul#f-field-list li .field .header .right{opacity:0}#wck-cv-builder .builder .and-condition:hover .cv-remove,.wc-kalkulator-wrapper ul#f-field-list li .field:hover .header .right{opacity:1}.wc-kalkulator-wrapper #wck_expression .wck-sortable-placeholder{border:1px dashed #888;background-color:#eee;box-shadow:none;text-align:center;color:#888;height:60px;margin-bottom:3px}.wc-kalkulator-wrapper #wck_expression .input-group .input-equation,.wc-kalkulator-wrapper #wck_expression .input-group .input-if{float:left;width:46%;margin:0 .5%}.wc-kalkulator-wrapper #wck_expression .input-group .input-buttons{float:left;width:2.5%;padding-top:5px}.wc-kalkulator-wrapper .inventory label{font-size:15px;margin:55px 0 10px;border-top:1px solid #c3c4c7;display:block;border-bottom:1px solid #c3c4c7;padding:10px 0 10px 5px}.wc-kalkulator-wrapper .cv-container{position:relative}.wc-kalkulator-wrapper .cv-container .action-field-visibility{position:absolute;right:5px;top:5px}.wc-kalkulator-wrapper .cv-container .visibility-readable{background-color:#fff}#postbox-container-2.fullscreen{position:fixed;z-index:999999;left:0;top:0;right:0;bottom:0;margin:0;background-color:#fff;overflow-y:scroll}#postbox-container-2.fullscreen #advanced-sortables,#postbox-container-2.fullscreen #normal-sortables{padding:20px}#wck-toolbar{position:fixed;bottom:0;left:0;right:0;z-index:9999999;background:#f5f5f5;border-top:1px solid #aaa;padding:10px 20px;box-shadow:0 0 45px #000}#wck-toolbar .wck-toggle-fullscreen{cursor:pointer}#wck-toolbar ul{margin:0}#wck-toolbar ul li{margin-bottom:0;display:inline-block}#wck-toolbar ul li,#wck-toolbar ul li li>*{vertical-align:middle}#wck-toolbar ul li.space{width:10px}#wck-expression-toolbar{display:none;position:absolute;top:0;border:1px solid #888;border-radius:5px;box-shadow:0 0 50px rgba(0,0,0,.5);padding:10px 20px;background-color:#fff;margin:0;width:360px;vertical-align:middle;text-align:justify;z-index:999999;tab-index:0}#wck-expression-toolbar *{tab-index:0}#wck-expression-toolbar .button{margin-bottom:6px}#wck-expression-toolbar select{width:270px}#wck-cv-builder{overflow:none;display:none;border-radius:3px;position:fixed;z-index:99999999;top:150px;left:50%;margin-left:-500px;bottom:150px;width:1000px;background-color:#fff;box-shadow:0 0 200px 100px rgba(0,0,0,.4);flex-direction:column}#wck-cv-builder .template{display:none;visibility:hidden}#wck-cv-builder .builder{flex-basis:100%;margin:20px 40px 0 5px;overflow-y:auto}#wck-cv-builder .builder .or-group{width:100%}#wck-cv-builder .builder .and-condition{display:flex;gap:3px;margin-bottom:3px}#wck-cv-builder .builder .and-condition .validation-error{border-color:red}#wck-cv-builder .builder .and-condition button{margin-bottom:3px}#wck-cv-builder .builder .and-condition .p-value{flex-grow:2}#wck-cv-builder .builder .or-condition{display:flex;flex-direction:row;align-content:stretch;gap:3px;flex-wrap:wrap}#wck-cv-builder .builder .or-condition:not(:first-child)::before{content:"OR";flex-basis:100%;display:block;font-weight:700;padding:10px;margin-left:25px}#wck-cv-builder .builder .and-group{flex-grow:4}#wck-cv-builder .builder .cv-remove{text-decoration:none;opacity:0;padding:5px}#wck-cv-builder .builder .cv-remove span{font-size:14px;line-height:1}#wck-cv-builder .builder .cv-action-and{align-self:end;margin-bottom:3px}#wck-cv-builder .builder .cv-action-or{display:block;margin-top:10px;margin-left:33px}#wck-cv-builder h1{padding:40px 40px 0}#wck-cv-builder p.save{padding:10px 20px 0;text-align:right;border-top:1px solid #ccc}.postbox.closed{border:1px solid #c3c4c7}.postbox.closed .inside{display:block} \ No newline at end of file diff --git a/assets/css/admin.nav.css b/assets/css/admin.nav.css new file mode 100644 index 0000000..9a3d1de --- /dev/null +++ b/assets/css/admin.nav.css @@ -0,0 +1,32 @@ +.wck-admin-navigation { + background: #fff; + border-bottom: 1px solid #ccc; + padding-top: 10px; + margin-left: -20px; + padding-left: 20px; +} +.wck-admin-navigation h2 { + font-size: 14px; + line-height: 2.5; + display: inline-block; + padding: 5px 0; + margin: 0 10px 0 0; +} +.wck-admin-navigation .wck-item { + display: inline-block; + font-size: 14px; + line-height: 2.5; + padding: 4px; + margin: 0 10px; + text-decoration: none; + color: inherit; +} +.wck-admin-navigation .wck-item.is-active { + border-bottom: #2271b1 solid 2px; + padding-bottom: 8px; +} +.wck-admin-navigation .wck-item:focus { + box-shadow: none; +} + +/*# sourceMappingURL=admin.nav.css.map */ diff --git a/assets/css/admin.nav.css.map b/assets/css/admin.nav.css.map new file mode 100644 index 0000000..eeb83bf --- /dev/null +++ b/assets/css/admin.nav.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["admin.nav.sass"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE","file":"admin.nav.css"} \ No newline at end of file diff --git a/assets/css/admin.nav.min.css b/assets/css/admin.nav.min.css new file mode 100644 index 0000000..f16fd44 --- /dev/null +++ b/assets/css/admin.nav.min.css @@ -0,0 +1 @@ +.wck-admin-navigation{background:#fff;border-bottom:1px solid #ccc;padding-top:10px;margin-left:-20px;padding-left:20px}.wck-admin-navigation .wck-item,.wck-admin-navigation h2{font-size:14px;line-height:2.5;display:inline-block;padding:5px 0;margin:0 10px 0 0}.wck-admin-navigation .wck-item{padding:4px;margin:0 10px;text-decoration:none;color:inherit}.wck-admin-navigation .wck-item.is-active{border-bottom:#2271b1 solid 2px;padding-bottom:8px}.wck-admin-navigation .wck-item:focus{box-shadow:none} \ No newline at end of file diff --git a/assets/css/admin.nav.sass b/assets/css/admin.nav.sass new file mode 100644 index 0000000..e44e526 --- /dev/null +++ b/assets/css/admin.nav.sass @@ -0,0 +1,29 @@ +.wck-admin-navigation + background: #fff + border-bottom: 1px solid #ccc + padding-top: 10px + margin-left: -20px + padding-left: 20px + + h2 + font-size: 14px + line-height: 2.5 + display: inline-block + padding: 5px 0 + margin: 0 10px 0 0 + + .wck-item + display: inline-block + font-size: 14px + line-height: 2.5 + padding: 4px + margin: 0 10px + text-decoration: none + color: inherit + + &.is-active + border-bottom: #2271b1 solid 2px + padding-bottom: 8px + + &:focus + box-shadow: none \ No newline at end of file diff --git a/assets/css/admin.sass b/assets/css/admin.sass index fae8cec..c692598 100644 --- a/assets/css/admin.sass +++ b/assets/css/admin.sass @@ -21,6 +21,8 @@ &.action-add-attachment margin-bottom: 10px + .lh-5 + line-height: 5 ul#f-field-list width: 100% diff --git a/assets/js/admin-fieldset-post-type.min.js b/assets/js/admin-fieldset-post-type.min.js index 9921e3a..32f3893 100644 --- a/assets/js/admin-fieldset-post-type.min.js +++ b/assets/js/admin-fieldset-post-type.min.js @@ -1 +1 @@ -(function($){"use strict";$(document).ready(function($){$("a.wck-toggle-publish").on("click",function(e){e.preventDefault();var data="action=wckalkulator_fieldset_post_type_toggle_publish"+"&_wck_ajax_nonce="+wck_ajax_fieldset._wck_ajax_nonce+"&post_id="+$(this).data("post-id");var toggleButton=$(this);toggleButton.css("pointer-events","none");$.post(wck_ajax_fieldset.ajax_url,data,function(response){if(typeof response==="object"&&response.status==="success"){toggleButton.find(".woocommerce-input-toggle").removeClass("woocommerce-input-toggle--enabled").removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--"+response.state);toggleButton.css("pointer-events","")}})})})})(jQuery); \ No newline at end of file +!function(){"use strict";jQuery(document).ready(function(o){o("a.wck-toggle-publish").on("click",function(e){e.preventDefault();var e="action=wckalkulator_fieldset_post_type_toggle_publish&_wck_ajax_nonce="+wck_ajax_fieldset._wck_ajax_nonce+"&post_id="+o(this).data("post-id"),t=o(this);t.css("pointer-events","none"),o.post(wck_ajax_fieldset.ajax_url,e,function(e){"object"==typeof e&&"success"===e.status&&(t.find(".woocommerce-input-toggle").removeClass("woocommerce-input-toggle--enabled").removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--"+e.state),t.css("pointer-events",""))})})})}(); \ No newline at end of file diff --git a/assets/js/admin.js b/assets/js/admin.js index fbe59e7..b5ea98b 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -1310,5 +1310,6 @@ $WK.loadExpression(); $WK.autocomplete(); + }); })(jQuery); \ No newline at end of file diff --git a/assets/js/admin.min.js b/assets/js/admin.min.js index 358486f..b8ebf8b 100644 --- a/assets/js/admin.min.js +++ b/assets/js/admin.min.js @@ -1 +1 @@ -(function($){"use strict";var $WK={};var $CV={};$(document).ready(function($){var suggest=[];var input_key_pressed={};$("#f-field-list").sortable({handle:".header",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$("#extra-inputs, #addon-inputs").sortable({handle:".action-drag",placeholder:"wck-sortable-placeholder",tolerance:"pointer"});$('').insertBefore("#wpwrap");$WK.colorpicker=$("input.wck-global-color-picker");$WK.colorpicker.iris();$WK.expressionLastFocusedInput=null;$WK.wpMediaFrame=null;$WK.wpMediaTarget=null;$WK.iconPreloader="data:image/gif;base64,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";$WK.fieldsLayout="one-col";$WK.toggleButton=function(btn,e){e.preventDefault();if(btn.hasClass("woocommerce-input-toggle--disabled")){btn.removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");return true}else{btn.removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");return false}return false};$WK.fullscreenMode=function(state){if(state){$("body").css("overflow","hidden");$("#postbox-container-2").addClass("fullscreen")}else{$("body").css("overflow","auto");$("#postbox-container-2").removeClass("fullscreen")}};$(".wck-toggle-layout").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fieldsLayout=state?"two-col":"one-col";$WK.updateLayout()});$(".wck-toggle-fullscreen").on("click",function(e){var state=$WK.toggleButton($(this),e);$WK.fullscreenMode(state)});$(".wck-toggle-expand").on("click",function(e){var state=$WK.toggleButton($(this),e);$(".action-toggle.dashicons-arrow-"+(state?"down":"up")+"-alt2").trigger("click")});$("body").on("click",".wck-toggle-colspan",function(e){e.preventDefault();var item=$(this).parent().parent().parent();if($(this).hasClass("woocommerce-input-toggle--disabled")){$(this).removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled");item.addClass("wck-layout-colspan");item.find(".f-colspan").val(2)}else{$(this).removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled");item.removeClass("wck-layout-colspan");item.find(".f-colspan").val(1)}});$(".action-save-post").on("click",function(e){e.preventDefault();$("#publish").trigger("click");if($("#publish").hasClass("disabled")){$(this).prop("disabled",true).addClass("disabled")}});$("body").on("click",".action-duplicate",function(e){e.preventDefault();var element=$(this).parent().parent().parent();var clonedElement=element.clone();clonedElement.hide();clonedElement.find(".f-title").val("");clonedElement.find(".f-name").val("");clonedElement.insertAfter(element);clonedElement.fadeIn(1500,function(){clonedElement.find(".dashicons-arrow-down-alt2").trigger("click");$(this).find(".f-title").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150);$(this).find(".f-name").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150)})});$WK.shouldHideExprToolbar=false;$WK.stateExprToolbar=false;$("body").on("focusin","#wck_expression .input-icon input, #wck_inventory .input-icon input, input.expression-editor-enabled",function(e){$WK.expressionLastFocusedInput=$(this);$WK.shouldHideExprToolbar=false;var posA=$(this).offset();var h=$(this).outerHeight();var posB=$("#wck_expression").offset();$("#wck-expression-toolbar").css({top:posA.top-posB.top-h-$("#wck-expression-toolbar").outerHeight()-20,left:posA.left-posB.left});if(!$WK.stateExprToolbar){$WK.stateExprToolbar=true;$WK.saveFields();$("#wck-parameters .first-selected").prop("selected",true);$("#wck-expression-toolbar").stop(true,false).fadeIn("fast")}$("#wck-parameters .total-price").toggle($(this).hasClass("show-total-price"));if(!$(this).hasClass("show-total-price")&&$("#wck-parameters").val()==="{total_price}"){$("#wck-parameters").val("")}}).on("focusout","#wck_expression input, #wck_inventory input, input.expression-editor-enabled",function(e){$WK.shouldHideExprToolbar=!(e.relatedTarget&&$("#wck-expression-toolbar").has(e.relatedTarget).length);setTimeout(function(){if($WK.stateExprToolbar&&$WK.shouldHideExprToolbar){$("#wck-expression-toolbar").stop(true,false).fadeOut("fast");$WK.stateExprToolbar=false}},200)}).on("click","#wck-expression-toolbar",function(e){if(e.target!==e.currentTarget&&e.target.tagName!=="OPTION")return;$WK.expressionLastFocusedInput.focus()}).on("click","button.add-field-to-formula, button.add-operator",function(e){e.preventDefault();var $focused=$WK.expressionLastFocusedInput;if(!$focused){$focused=$(".input-icon").find("input:visible").first();$focused.focus()}if($focused&&$focused.length){var value=$(this).hasClass("add-operator")?$(this).val():$("#wck-parameters").val();if(value===null){return}var cursorPos=$focused[0].selectionStart;var x=$focused.val();$focused.val(x.slice(0,cursorPos)+value+($(this).data("ending")||"")+x.slice(cursorPos));$focused.focus();cursorPos+=value.length;$focused[0].setSelectionRange(cursorPos,cursorPos)}}).on("click",".field .pairs .action-add",function(){var $clone=$(this).prev(".pair").clone().insertBefore($(this));$clone.find("input").val("")}).on("click",".field .pairs .action-showimport",function(){$(this).parent().find("div.importer").toggle()}).on("click",".field .pairs .action-import",function(){var $this=$(this);var input=$this.parent().find("textarea").val().trim().split("\n");if(Array.isArray(input)){input.forEach(function(el){var columns=el.trim().split(";");var $last_pair=$this.parent().parent().find(".pair").last();var $clone=$last_pair.clone().insertAfter($last_pair);if(columns.length===2){$clone.find("input.fs-name").val(columns[0]);$clone.find("input.fs-title").val(columns[1])}else if(columns.length===1){$clone.find("input.fs-title").val(columns[0])}})}}).on("click",".field .pairs .action-removeall",function(){if(confirm("Are you sure?")){$(this).parent().find(".pair").slice(1).remove()}}).on("click",".field .pair .action-delete",function(){var $pairs=$(this).closest(".pairs");if($pairs.children(".pair").length>1){if(confirm("Are you sure?")){$(this).closest(".pair").remove()}}else{alert("You cannot remove the last item!")}}).on("click",".field .header .action-delete",function(){if(confirm("Are you sure?")){var $target=$(this).closest("li");$target.fadeOut("slow",function(){$target.remove()})}}).on("click",".field .header .action-toggle",function(){var fieldBody=$(this).closest(".field").find(".body");fieldBody.slideToggle(300);$(this).toggleClass("dashicons-arrow-up-alt2");$(this).toggleClass("dashicons-arrow-down-alt2");if($(this).hasClass("dashicons-arrow-down-alt2")){$(this).parent().find(".name").text((fieldBody.find(".f-title").length?"- "+fieldBody.find(".f-title").val():"")+" {"+fieldBody.find(".f-name").val()+"}")}else{$(this).parent().find(".name").text("")}}).on("click","#add-field-button",function(e){e.preventDefault();var fieldType=$("#select-field").val();var id=$WK.addField(fieldType);$("html, body").animate({scrollTop:$("#"+id).offset().top-50},1e3)}).on("click",".expression_conditional .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#extra-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last condition!")}}).on("click",".expression_addon .input-group .action-delete",function(){var $target=$(this).closest(".input-group");if($("#addon-inputs .input-group").length>1){if(confirm("Are you sure?")){$target.hide("slow",function(){$target.remove()})}}else{alert("You cannot remove the last addon!")}}).on("click",".action-add-image",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this image"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();if($WK.wpMediaTarget.prop("tagName")==="A"){$WK.wpMediaTarget.next("img.wp-media-image-preview").attr("src",attachment.url);$WK.wpMediaTarget.next().next("input.wp-media-image-id").attr("value",attachment.id);$WK.wpMediaTarget.hide()}else{$WK.wpMediaTarget.attr("src",attachment.url);$WK.wpMediaTarget.next("input.wp-media-image-id").attr("value",attachment.id)}});$WK.wpMediaFrame.open()}).on("click",".action-add-attachment",function(e){e.preventDefault();$WK.wpMediaTarget=$(this);if($WK.wpMediaFrame){$WK.wpMediaFrame.open();return}$WK.wpMediaFrame=wp.media({multiple:false,button:{text:"Select this file"}});$WK.wpMediaFrame.on("select",function(){var attachment=$WK.wpMediaFrame.state().get("selection").first().toJSON();$WK.wpMediaTarget.next("input.wp-media-attachment-id").val(attachment.id);$WK.wpMediaTarget.next().next("a.wp-media-attachment-preview").attr("href",attachment.url).text(attachment.url)});$WK.wpMediaFrame.open()}).on("focus",'[data-type="colorswatches"] input.fs-title',function(e){e.preventDefault();var _target=$(this);$WK.colorpicker.iris("show");$(".iris-picker").css({top:_target.offset().top+40,left:_target.offset().left});$WK.colorpicker.iris("option","change",function(event,ui){_target.val(ui.color.toString());var color=ui.color.toRgb();var t=(color.r+color.g+color.b)/2;var textColor=t<200?"#FFFFFF":"#000000";_target.css({"background-color":ui.color.toString(),color:textColor})});$WK.colorpicker.iris("color",$(this).val())}).on("click","input.allowed-extensions",function(){var field_id="#"+$(this).closest("li").attr("id");var ext=[];$(field_id+" input.allowed-extensions:checked").each(function(){ext.push($(this).data("extension"))});$(field_id+" input.fu-allowed-extensions").val(ext.join("|"))}).on("change","input.f-name",function(){var target=$(this);var newName=$(this).val().trim();if(newName!==""){$("#wck_fields_editor input.f-name").each(function(){if($(this).val()===newName&&!$(this).is(target)){alert("The name {"+newName+"} is already in use! Choose another name.");target.val("");return false}})}if($(this)[0].checkValidity()&&typeof $(this).data("lastValid")!=="undefined"){var oldName=$(this).data("lastValid");if(oldName!==newName){var oldNameInUse=false;$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){if($(this).val().includes(oldName)){oldNameInUse=true;return false}});if(oldNameInUse&&confirm("Wait! Seems like {"+oldName+"} is used in formulas! Do you want to replace {"+oldName+"} in all formulas? {"+oldName+"} will be changed to {"+newName+"}")){$("#wck_expression input[type=text], #wck_fields_editor input.f-visibility, #wck_fields_editor input.f-visibility-readable, #wck_fields_editor input.visibility-readable").each(function(){$(this).val($(this).val().replaceAll("{"+oldName+"}","{"+newName+"}").replaceAll("{"+oldName+":","{"+newName+":").replaceAll('"field":"'+oldName+'"','"field":"'+newName+'"'))});$(this).data("lastValid",newName)}}}}).on("focusin","input.f-name",function(){if($(this)[0].checkValidity()){$(this).data("lastValid",$(this).val())}});$(".iris-square-value").on("click",function(e){e.preventDefault()});$(document).click(function(e){if(!$(e.target).closest('.iris-picker, [data-type="colorswatches"] input.fs-title').length){if($(".iris-picker").is(":visible")){$WK.colorpicker.iris("hide")}}});$("form#post").submit(function(e){$WK.saveFields();if(!$WK.saved){e.preventDefault();return false}$WK.saveExpression();if(!$WK.expr_saved&&$WK.expression.mode!=="off"){e.preventDefault();alert("Expression is required. Fill in required fields and try again!");return false}return true});$WK.init=function(){$WK.fieldList=$("#f-field-list");$WK.html=wck_fields_html;$WK.fields={};$WK.saved=false;$WK.expr_saved=false;$WK.counter=0;$WK.expression={mode:$("input.expression_type:checked").val()};$WK.loadJSONdata();$WK.showExpressionEditor();$WK.changeAssignType();$("form#post").attr("novalidate","");$WK.buildTooltips("");$WK.updateLayout();$("#wck-parameters .first-selected").prop("selected",true)};$WK.updateLayout=function(){if($WK.fieldsLayout==="two-col"){$WK.fieldList.addClass("layout-two-col")}else{$WK.fieldList.removeClass("layout-two-col")}};$WK.buildTooltips=function(selector){$(selector+"span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"})};$WK.changeAssignType=function(){var disabled=$("#assign_type").val()==="1";$("#assign_products, #assign_categories, #assign_tags, #assign_attributes").prop("disabled",disabled);$(".hide-if-disabled").toggle(!disabled)};$("#assign_type").on("change",$WK.changeAssignType);$WK.preloadMedia=function(id,callback){wp.media.attachment(id).fetch().then(function(){callback(wp.media.attachment(id))});return};$WK.addField=function(type){$WK.counter+=1;var id="wkfield-"+$WK.counter;$("li.welcome",$WK.fieldList).remove();$WK.fieldList.append($("
  • ",{"data-type":type,class:"form-invalid",id:id}).append($WK.html[type].replace("{id}",id)));$WK.buildTooltips("#"+id+" ");if($("#"+id).find(".pairs").length>0){$("#"+id+" .pairs").sortable({placeholder:"wck-sortable-placeholder",tolerance:"pointer"})}return id};$(window).on("beforeunload",function(){if($WK.saved===false){return""}});$WK.saveFields=function(){$WK.fields={};suggest=[];var error=$("li .field",$WK.fieldList).length===0;$("label.error").remove();$WK.saved=false;$("#wck-parameters .defined-fields").html("");$WK.appendGlobalParameters();if(error){alert("Please add at least one field before saving.");return false}$("li .field",$WK.fieldList).each(function(){var $row=$(this);var input_fname=$row.find("input.f-name");var input_ftitle=$row.find("input.f-title");var input_fhint=$row.find("input.f-hint");var input_default_value=$row.find("input.f-default-value");var input_css_class=$row.find("input.f-css-class");var field={type:$row.data("type"),use_expression:$row.data("use-expression")===true,name:input_fname.val(),title:input_ftitle.val(),hint:input_fhint.val(),default_value:input_default_value.val(),css_class:input_css_class.val(),layout:$WK.fieldsLayout,colspan:$row.find("input.f-colspan").val(),visibility:$row.find("input.f-visibility").val(),visibility_readable:$row.find("input.f-visibility-readable").val()};if($row.find("select.f-required").length>0){switch($row.find("select.f-required").val()){case"on":field.required="1";break;case"if-visible":field.required="2";break;case"off":field.required="0";break}}else{field.required="1"}var input_fprice=$row.find("input.f-price");if(input_fprice.length>0){field.price=input_fprice.val();if(field.price!==""){field.use_expression=true}}var input_fimgwidth=$row.find("input.fimg-width");if(input_fimgwidth.length>0){field.image_size=input_fimgwidth.val()}var $fs_options;switch(field.type){case"select":case"radio":case"imageselect":case"imageswatches":case"colorswatches":case"radiogroup":case"checkboxgroup":field.options_name=[];field.options_title=[];if(field.type==="imageselect"||field.type==="imageswatches"){field.options_image=[]}if(field.type==="checkboxgroup"){field.select_limit=$row.find("input.fcbg-limit").val()}$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var fs_name=$(this).find("input.fs-name");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_name.val()+":"+fs_title.val()}field.options_name.push(fs_name.val()+":"+fs_title.val());field.options_title.push(fs_title.val());if(field.type==="imageselect"||field.type==="imageswatches"){var fs_image=$(this).find("input.fs-image");field.options_image.push(fs_image.val())}});break;case"dropdown":field.options_title=[];$fs_options=$row.find(".fs-option");$fs_options.each(function(){var fs_title=$(this).find("input.fs-title");var f_default_value=$(this).find("input.f-default-value").is(":checked");if(typeof f_default_value!=="undefined"&&f_default_value===true){field.default_value=fs_title.val()}field.options_title.push(fs_title.val())});break;case"number":var input_fnmin=$row.find("input.fn-min-value");field.min=input_fnmin.val();var input_fnmax=$row.find("input.fn-max-value");field.max=input_fnmax.val();break;case"checkbox":var input_fcb_default_state=$row.find("select.fcb-default-state");field.default_state=input_fcb_default_state.val()==="on";break;case"text":case"textarea":case"email":var input_ftminlen=$row.find("input.ft-min-length");var input_ftmaxlen=$row.find("input.ft-max-length");var input_ftpattern=$row.find("input.ft-pattern");field.min=input_ftminlen.val();field.max=input_ftmaxlen.val();if(input_ftpattern.length>0){field.pattern=input_ftpattern.val()}break;case"colorpicker":case"datepicker":case"rangedatepicker":var input_fdpdisallow_past_date=$row.find("input.fdp-disallow-past-date");field.disallow_past_date=input_fdpdisallow_past_date.is(":checked");break;case"imageupload":field.max_file_size=$row.find("input.fu-max-file-size").val();field.allowed_extensions=$row.find("input.fu-allowed-extensions").val();break;case"html":case"paragraph":case"hidden":case"attachment":field.content=$row.find(".fst-content").val();break;case"formula":field.content=$row.find(".fst-content").val();field.display_on_user_cart=$row.find(".fst-display-on-user-cart").val()==="on";break;case"link":field.content=$row.find(".fst-content").val();field.target=$row.find(".fst-target").val();break;case"heading":field.content=$row.find(".fst-content").val();field.level=$row.find(".fst-level").val();break}if(field.name!==""&&field.name in $WK.fields){error=true;alert("Field names must be unique! The '"+field.name+"' name is used more than once.")}if(!error){$WK.appendFormulaVars(field)}});var wkform=$("form#post");if(!wkform[0].checkValidity()){error=true;$("input:invalid").closest(".field").find(".action-toggle.dashicons-arrow-down-alt2").trigger("click");$("input:invalid").each(function(){$('").insertBefore($(this))})}if(error&&$("label.error").length){$("html, body").animate({scrollTop:$("label.error").first().offset().top-160},1e3)}$WK.saveJSONdata();$WK.saved=!error};$WK.appendGlobalParameters=function(){if(typeof wck_global_parameters!==undefined){$("#wck-parameters .global-parameters").html("");$.each(wck_global_parameters,function(name,value){var name="global:"+name;var appendChildren="";suggest.push(name);if(typeof value==="object"){$.each(value,function(k,v){var suffix="['"+k+"']";appendChildren=appendChildren+'"});value=""}else{value=" = "+value}$("#wck-parameters .global-parameters").append('");$("#wck-parameters .global-parameters").append(appendChildren)})}};$WK.appendFormulaVars=function(field){$WK.fields[field.name]=field;if(field.use_expression){if(field.type!=="checkboxgroup"){suggest.push(field.name);$("#wck-parameters .defined-fields").append('")}else{suggest.push(field.name);$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":sum");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":min");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":max");$("#wck-parameters .defined-fields").append('")}if(field.type==="text"||field.type==="textarea"){suggest.push(field.name+":text");$("#wck-parameters .defined-fields").append('")}if(field.type==="rangedatepicker"){suggest.push(field.name+":date_from");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":date_to");$("#wck-parameters .defined-fields").append('");suggest.push(field.name+":days");$("#wck-parameters .defined-fields").append('")}else if(field.type==="datepicker"){suggest.push(field.name+":date");$("#wck-parameters .defined-fields").append('")}else if(field.type==="imageupload"){suggest.push(field.name+":size");$("#wck-parameters .defined-fields").append('")}}};$WK.saveJSONdata=function(){if(Object.keys($WK.fields).length>0){$("input[name=_wck_fieldset]").val(JSON.stringify($WK.fields))}};$WK.loadJSONdata=function(){if(typeof wck_load_fieldset==="object"){var layoutLoaded=false;$.each(wck_load_fieldset,function(){if(!layoutLoaded){if(this.hasOwnProperty("layout")&&this.layout==="two-col"){$(".wck-toggle-layout").trigger("click")}layoutLoaded=true}var field_id=$WK.addField(this.type);var $field=$("#"+field_id+" .field");$("#"+field_id+" .f-name").val(this.name);if(this.hasOwnProperty("colspan")){$("#"+field_id+" .f-colspan").val(this.colspan);if(this.colspan==="2"){$("#"+field_id+" .wck-toggle-colspan").trigger("click")}}$("#"+field_id+" .f-title").val(this.title);$("#"+field_id+" .f-hint").val(this.hint);$("#"+field_id+" .f-css-class").val(this.css_class);if($("#"+field_id+" .f-required").length>0){$("#"+field_id+" .f-required").val(this.required==="1"?"on":this.required==="2"?"if-visible":"off")}if(this.hasOwnProperty("visibility")){$("#"+field_id+" .f-visibility").val(this.visibility);$("#"+field_id+" .f-visibility-readable").val(this.visibility_readable);if(this.visibility_readable!==""){$("#"+field_id+" .visibility-readable").val("Rule preview: "+this.visibility_readable)}}var fprice=$("#"+field_id+" .f-price");if(fprice.length>0){fprice.val(this.price)}var fimgwidth=$("#"+field_id+" .fimg-width");if(fimgwidth.length>0){fimgwidth.val(this.image_size)}var options_title,options_name,options_image,default_value,first,$checked;if(this.type==="dropdown"){options_title=this.options_title;default_value=this.default_value;first=true;$checked=null;$.each(options_title,function(i,option_title){if(first){var $first=$field.find(".fs-option");$first.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-title").val(option_title);if(default_value===option_title){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(["select","radio","imageselect","radiogroup","checkboxgroup","imageswatches","colorswatches"].indexOf(this.type)>=0){options_name=this.options_name;options_title=this.options_title;default_value=this.default_value;if(this.type==="imageselect"||this.type==="imageswatches"){options_image=this.options_image;wp.media.attachment(options_image).fetch()}if(this.type==="checkboxgroup"){$("#"+field_id+" .fcbg-limit").val(this.select_limit)}first=true;$checked=null;$.each(options_name,function(i,option_name){if(option_name.indexOf(":")>=0){option_name=option_name.slice(0,option_name.indexOf(":"))}if(first){var $first=$field.find(".fs-option");$first.find("input.fs-name").val(option_name);$first.find("input.fs-title").val(options_title[i]);var fs_image=$first.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$first.find("a.action-add-image").hide();$first.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$first.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$first.find("input.f-default-value")}first=false}else{var $clone=$field.find(".fs-option").last().clone().insertBefore($("#"+field_id+" .fs-options .action-add"));$clone.find("input.fs-name").val(option_name);$clone.find("input.fs-title").val(options_title[i]);fs_image=$clone.find("input.fs-image");if(fs_image.length>0){fs_image.val(options_image[i]);$clone.find("a.action-add-image").hide();$clone.find(".wp-media-image-preview").attr("src",$WK.iconPreloader);$WK.preloadMedia(options_image[i],function(attachment){$clone.find(".wp-media-image-preview").attr("src",attachment.get("url"))})}if(default_value===option_name){$checked=$clone.find("input.f-default-value")}}if($checked){$checked.prop("checked",true)}})}else if(this.type==="number"){$("#"+field_id+" .fn-min-value").val(this.min);$("#"+field_id+" .fn-max-value").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value)}else if(this.type==="checkbox"){$("#"+field_id+" .fcb-default-state").val(this.default_state==="1"?"on":"off")}else if(this.type==="text"||this.type==="textarea"||this.type==="email"){$("#"+field_id+" .ft-min-length").val(this.min);$("#"+field_id+" .ft-max-length").val(this.max);$("#"+field_id+" .f-default-value").val(this.default_value);if(this.type==="text"){$("#"+field_id+" .ft-pattern").val(this.pattern)}}else if(this.type==="colorpicker"||this.type==="datepicker"||this.type==="rangedatepicker"){$("#"+field_id+" .fdp-disallow-past-date").prop("checked",this.disallow_past_date)}else if(this.type==="imageupload"){$("#"+field_id+" .fu-max-file-size").val(this.max_file_size);$("#"+field_id+" .fu-allowed-extensions").val(this.allowed_extensions);var ext=this.allowed_extensions.split("|");ext.forEach(function(e){$("#"+field_id+" .allowed-extensions.ext-"+e).prop("checked",true)})}else if(["html","paragraph","heading","hidden","link","attachment","formula"].indexOf(this.type)>=0){$("#"+field_id+" .fst-content").val(this.content);if(this.type==="heading"){$("#"+field_id+" .fst-level").val(this.level)}else if(this.type==="link"){$("#"+field_id+" .fst-target").val(this.target)}else if(this.type==="attachment"){$WK.preloadMedia(this.content,function(attachment){$("#"+field_id+" .wp-media-attachment-preview").attr("href",attachment.get("url")).text(attachment.get("url"))})}else if(this.type==="formula"){$("#"+field_id+" .fst-display-on-user-cart").val(this.display_on_user_cart==="1"?"on":"off")}}});$WK.saveFields()}};$WK.showExpressionEditor=function(){$("div.expression_oneline, div.expression_conditional, div.expression_off, div.expression_addon").hide();$("div.expression_"+$WK.expression.mode).show();if($WK.expression.mode==="off"){$(".off-hide").hide()}else{$(".off-hide").show()}};$("input.expression_type").on("change",function(){$WK.expression.mode=$(this).val();$WK.expressionLastFocusedInput=null;$WK.showExpressionEditor()});$WK.addCondition=function(if_value,then_value,addon=false){var $html=$('
    '+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    '+''+"
    "+'
    ');$(".input-if input",$html).val(if_value);$(".input-equation input",$html).val(then_value);if(addon===true){$("div#addon-inputs").append($html)}else{$("div#extra-inputs").append($html)}$WK.autocomplete()};$("button.add-condition").on("click",function(){$WK.addCondition()});$("button.add-addon").on("click",function(){$WK.addCondition("","",true)});$WK.autocomplete=function(){$(".input-icon input").bind("keydown",function(e){if(e.keyCode===16||e.keyCode===219){input_key_pressed[e.keyCode]=true}}).autocomplete({minLength:0,source:function(request,response){if(input_key_pressed[16]===true&&input_key_pressed[219]===true){response(suggest)}},focus:function(){return false},select:function(event,ui){delete input_key_pressed[16];delete input_key_pressed[219];this.value+=ui.item.value+"}";return false}})};$WK.saveExpression=function(){var mode=$WK.expression.mode;$WK.expr_saved=false;if(mode==="oneline"){$WK.expression.expr=$(".expression_oneline input").val();if($WK.expression.expr!==""){$WK.expr_saved=true}}if(mode==="conditional"){var data=[];$(".expression_conditional .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});var input_else=$(".expression_conditional .input-else input").val();data.push({type:"else",if:"true",then:input_else});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="addon"){var data=[];$(".expression_addon .input-group").each(function(){var input_if=$(this).find(".input-if input").val();var input_eq=$(this).find(".input-equation input").val();data.push({type:"condition",if:input_if,then:input_eq})});$WK.expression.expr=data;if($WK.expression.expr.length>0){$WK.expr_saved=true}}if(mode==="off"){$("input[name=_wck_expression]").val("off")}else{$("input[name=_wck_expression]").val(JSON.stringify($WK.expression))}};$WK.loadExpression=function(){if(typeof wck_load_expression==="object"){$WK.expression.mode=wck_load_expression.mode;$WK.expression.expr=wck_load_expression.expr;if($WK.expression.mode==="oneline"){$(".expression_oneline input").val($WK.expression.expr);$("input[name=_wck_choose_expression_type].expression_oneline").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}else if($WK.expression.mode==="conditional"){$.each($WK.expression.expr,function(){if(this.type==="condition"){$WK.addCondition(this.if,this.then)}else if(this.type==="else"){$(".input-else input").val(this.then)}});$("input[name=_wck_choose_expression_type].expression_conditional").prop("checked",true);$WK.showExpressionEditor()}else if($WK.expression.mode==="addon"){$.each($WK.expression.expr,function(){$WK.addCondition(this.if,this.then,true)});$("input[name=_wck_choose_expression_type].expression_addon").prop("checked",true);$WK.showExpressionEditor()}}else{$WK.expression.mode="off";$("input[name=_wck_choose_expression_type].expression_off").prop("checked",true);$WK.showExpressionEditor();$WK.addCondition()}};$("button.test-expression").on("click",function(){$WK.saveExpression()});$WK.toolbarOnTop=false;$(window).scroll(function(){if($(this).scrollTop()>100){if(!$WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=true;$("#wck-toolbar").css({top:"0px",bottom:"auto"}).fadeIn()})}}else if(!$("#postbox-container-2").hasClass("fullscreen")){if($WK.toolbarOnTop){$("#wck-toolbar").fadeOut(function(){$WK.toolbarOnTop=false;$("#wck-toolbar").css({top:"auto",bottom:"0px"}).fadeIn()})}}});$CV.window=$("#wck-cv-builder");$CV.builder=$CV.window.find(".builder");$CV.template=$CV.window.find(".template").children();$CV.context=null;$CV.open=function(context){$CV.context=context;var fieldSelect=$CV.template.find("select.p-field");fieldSelect.empty();$WK.saveFields();fieldSelect.append('');$.each($WK.fieldList.find(".field"),function(){if($(this).data("group")!=="static"&&!$(this).is(context)){var name=$(this).find(".f-name").val();fieldSelect.append('")}});$CV.builder.append($CV.template.clone());$CV.builder.find(".or-condition").remove();var loadData=$CV.context.find(".f-visibility").val();try{loadData=JSON.parse(loadData)}catch(e){loadData=false}if(typeof loadData==="object"){$.each(loadData,function(i,or_condition){var first=true;$.each(or_condition,function(j,and_condition){$CV.add(first?"or":"and",null,and_condition);first=false})})}else{$CV.add("or",null,null)}$CV.window.find("span.self-name").text(context.find(".f-name").val());$CV.window.show().css({display:"flex"})};$CV.close=function(){$CV.window.hide();$CV.builder.empty()};$CV.add=function(type,destination,values){if(destination===null){destination=$CV.builder.find("."+type+"-group").last()}destination.append($CV.window.find(".template ."+type+"-condition").clone());var newCondition=destination.find(".and-condition").last();if(values!==null&&typeof values==="object"){newCondition.find(".p-field").val(values.field);newCondition.find(".p-comparison").val(values.comp).trigger("change");newCondition.find(".p-value").val(values.value)}else{newCondition.find(".p-value").val("")}};$CV.validate=function(){var isValid=true;var conditions=$CV.builder.find(".and-condition");conditions.find(".validation-error").removeClass("validation-error");conditions.each(function(){var field=$(this).find(".p-field");var comp=$(this).find(".p-comparison").val();var value=$(this).find(".p-value");if([null,""].includes(field.val())){field.addClass("validation-error");isValid=false}if(!value.prop("disabled")&&value.val()===""){value.addClass("validation-error");isValid=false}if(["5","6","7","8"].includes(comp)&&!value.val().match(/^-?\d*[\.,]?\d+$/)){value.addClass("validation-error");isValid=false}if(comp==="9"&&value.val()===""){value.addClass("validation-error");isValid=false}});return isValid};$CV.window.on("click",".cv-action-and",function(e){e.preventDefault();$CV.add("and",$(this).prev(),null)});$CV.window.on("click",".cv-action-or",function(e){e.preventDefault();$CV.add("or",$(this).prev(),null)});$CV.window.on("click",".cv-remove",function(e){e.preventDefault();var count=$(this).closest(".and-group").children().length;if(count===1){$(this).closest(".or-condition").remove()}else{$(this).parent().remove()}});$CV.window.on("change","select.p-comparison",function(e){var disabled=["1","2"].includes($(this).val());var pVal=$(this).next(".p-value");pVal.prop("disabled",disabled);if(disabled){pVal.val("")}});$CV.window.on("click",".cv-close",function(e){e.preventDefault();$CV.close()});$CV.window.on("click",".cv-save",function(e){e.preventDefault();if(!$CV.validate()){alert("Please correct the form!");return false}var or_conditions=[];var or_readable=[];$.each($CV.builder.find(".or-condition"),function(){var and_conditions=[];var and_readable=[];$.each($(this).find(".and-condition"),function(){var item={field:$(this).find(".p-field").val(),comp:$(this).find(".p-comparison").val(),comp_text:$(this).find(".p-comparison option:selected").text(),value:$(this).find(".p-value").val()};and_conditions.push(item);and_readable.push("{"+item.field+"} "+item.comp_text+" "+item.value)});or_conditions.push(and_conditions);or_readable.push(" ( "+and_readable.join(" and ")+" ) ")});var readable=or_readable.join(" or ").replaceAll(" "," ");$CV.context.find(".f-visibility").val(or_conditions.length===0?"":JSON.stringify(or_conditions));$CV.context.find(".f-visibility-readable").val(readable);if(readable!==""){$CV.context.find(".visibility-readable").val("Rule preview: "+readable)}else{$CV.context.find(".visibility-readable").val("")}$CV.close()});$("body").on("click",".action-field-visibility",function(){var context=$(this).closest(".field");$CV.open(context)});$WK.init();$WK.loadExpression();$WK.autocomplete()})})(jQuery); \ No newline at end of file +!function(e){"use strict";var u={},o={};e(document).ready(function(f){var n=[],t={};f("#f-field-list").sortable({handle:".header",placeholder:"wck-sortable-placeholder",tolerance:"pointer"}),f("#extra-inputs, #addon-inputs").sortable({handle:".action-drag",placeholder:"wck-sortable-placeholder",tolerance:"pointer"}),f('').insertBefore("#wpwrap"),u.colorpicker=f("input.wck-global-color-picker"),u.colorpicker.iris(),u.expressionLastFocusedInput=null,u.wpMediaFrame=null,u.wpMediaTarget=null,u.iconPreloader="data:image/gif;base64,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",u.fieldsLayout="one-col",u.toggleButton=function(e,i){return i.preventDefault(),e.hasClass("woocommerce-input-toggle--disabled")?(e.removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled"),!0):(e.removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled"),!1)},u.fullscreenMode=function(e){e?(f("body").css("overflow","hidden"),f("#postbox-container-2").addClass("fullscreen")):(f("body").css("overflow","auto"),f("#postbox-container-2").removeClass("fullscreen"))},f(".wck-toggle-layout").on("click",function(e){e=u.toggleButton(f(this),e);u.fieldsLayout=e?"two-col":"one-col",u.updateLayout()}),f(".wck-toggle-fullscreen").on("click",function(e){e=u.toggleButton(f(this),e);u.fullscreenMode(e)}),f(".wck-toggle-expand").on("click",function(e){e=u.toggleButton(f(this),e);f(".action-toggle.dashicons-arrow-"+(e?"down":"up")+"-alt2").trigger("click")}),f("body").on("click",".wck-toggle-colspan",function(e){e.preventDefault();e=f(this).parent().parent().parent();f(this).hasClass("woocommerce-input-toggle--disabled")?(f(this).removeClass("woocommerce-input-toggle--disabled").addClass("woocommerce-input-toggle--enabled"),e.addClass("wck-layout-colspan"),e.find(".f-colspan").val(2)):(f(this).removeClass("woocommerce-input-toggle--enabled").addClass("woocommerce-input-toggle--disabled"),e.removeClass("wck-layout-colspan"),e.find(".f-colspan").val(1))}),f(".action-save-post").on("click",function(e){e.preventDefault(),f("#publish").trigger("click"),f("#publish").hasClass("disabled")&&f(this).prop("disabled",!0).addClass("disabled")}),f("body").on("click",".action-duplicate",function(e){e.preventDefault();var e=f(this).parent().parent().parent(),i=e.clone();i.hide(),i.find(".f-title").val(""),i.find(".f-name").val(""),i.insertAfter(e),i.fadeIn(1500,function(){i.find(".dashicons-arrow-down-alt2").trigger("click"),f(this).find(".f-title").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150),f(this).find(".f-name").fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150).fadeOut(150).fadeIn(150)})}),u.shouldHideExprToolbar=!1,u.stateExprToolbar=!1,f("body").on("focusin","#wck_expression .input-icon input, #wck_inventory .input-icon input, input.expression-editor-enabled",function(e){u.expressionLastFocusedInput=f(this),u.shouldHideExprToolbar=!1;var i=f(this).offset(),t=f(this).outerHeight(),a=f("#wck_expression").offset();f("#wck-expression-toolbar").css({top:i.top-a.top-t-f("#wck-expression-toolbar").outerHeight()-20,left:i.left-a.left}),u.stateExprToolbar||(u.stateExprToolbar=!0,u.saveFields(),f("#wck-parameters .first-selected").prop("selected",!0),f("#wck-expression-toolbar").stop(!0,!1).fadeIn("fast")),f("#wck-parameters .total-price").toggle(f(this).hasClass("show-total-price")),f(this).hasClass("show-total-price")||"{total_price}"!==f("#wck-parameters").val()||f("#wck-parameters").val("")}).on("focusout","#wck_expression input, #wck_inventory input, input.expression-editor-enabled",function(e){u.shouldHideExprToolbar=!(e.relatedTarget&&f("#wck-expression-toolbar").has(e.relatedTarget).length),setTimeout(function(){u.stateExprToolbar&&u.shouldHideExprToolbar&&(f("#wck-expression-toolbar").stop(!0,!1).fadeOut("fast"),u.stateExprToolbar=!1)},200)}).on("click","#wck-expression-toolbar",function(e){e.target!==e.currentTarget&&"OPTION"!==e.target.tagName||u.expressionLastFocusedInput.focus()}).on("click","button.add-field-to-formula, button.add-operator",function(e){e.preventDefault();var i,t,a,e=u.expressionLastFocusedInput;e||(e=f(".input-icon").find("input:visible").first()).focus(),e&&e.length&&(null!==(i=(f(this).hasClass("add-operator")?f(this):f("#wck-parameters")).val())&&(t=e[0].selectionStart,a=e.val(),e.val(a.slice(0,t)+i+(f(this).data("ending")||"")+a.slice(t)),e.focus(),t+=i.length,e[0].setSelectionRange(t,t)))}).on("click",".field .pairs .action-add",function(){f(this).prev(".pair").clone().insertBefore(f(this)).find("input").val("")}).on("click",".field .pairs .action-showimport",function(){f(this).parent().find("div.importer").toggle()}).on("click",".field .pairs .action-import",function(){var t=f(this),e=t.parent().find("textarea").val().trim().split("\n");Array.isArray(e)&&e.forEach(function(e){var e=e.trim().split(";"),i=t.parent().parent().find(".pair").last(),i=i.clone().insertAfter(i);2===e.length?(i.find("input.fs-name").val(e[0]),i.find("input.fs-title").val(e[1])):1===e.length&&i.find("input.fs-title").val(e[0])})}).on("click",".field .pairs .action-removeall",function(){confirm("Are you sure?")&&f(this).parent().find(".pair").slice(1).remove()}).on("click",".field .pair .action-delete",function(){1",{"data-type":e,class:"form-invalid",id:i}).append(u.html[e].replace("{id}",i))),u.buildTooltips("#"+i+" "),0 '+f(this)[0].validationMessage+"").insertBefore(f(this))})),p&&f("label.error").length&&f("html, body").animate({scrollTop:f("label.error").first().offset().top-160},1e3),u.saveJSONdata(),u.saved=!p},u.appendGlobalParameters=function(){f("#wck-parameters .global-parameters").html(""),f.each(wck_global_parameters,function(t,e){var t="global:"+t,a="";n.push(t),e="object"==typeof e?(f.each(e,function(e,i){a=a+'"}),""):" = "+e,f("#wck-parameters .global-parameters").append('"),f("#wck-parameters .global-parameters").append(a)})},u.appendFormulaVars=function(e){(u.fields[e.name]=e).use_expression&&("checkboxgroup"!==e.type?(n.push(e.name),f("#wck-parameters .defined-fields").append('")):(n.push(e.name),f("#wck-parameters .defined-fields").append('"),n.push(e.name+":sum"),f("#wck-parameters .defined-fields").append('"),n.push(e.name+":min"),f("#wck-parameters .defined-fields").append('"),n.push(e.name+":max"),f("#wck-parameters .defined-fields").append('")),"text"!==e.type&&"textarea"!==e.type||(n.push(e.name+":text"),f("#wck-parameters .defined-fields").append('")),"rangedatepicker"===e.type?(n.push(e.name+":date_from"),f("#wck-parameters .defined-fields").append('"),n.push(e.name+":date_to"),f("#wck-parameters .defined-fields").append('"),n.push(e.name+":days"),f("#wck-parameters .defined-fields").append('")):"datepicker"===e.type?(n.push(e.name+":date"),f("#wck-parameters .defined-fields").append('")):"imageupload"===e.type&&(n.push(e.name+":size"),f("#wck-parameters .defined-fields").append('")))},u.saveJSONdata=function(){0
  • ');f(".input-if input",a).val(e),f(".input-equation input",a).val(i),f(!0===t?"div#addon-inputs":"div#extra-inputs").append(a),u.autocomplete()},f("button.add-condition").on("click",function(){u.addCondition()}),f("button.add-addon").on("click",function(){u.addCondition("","",!0)}),u.autocomplete=function(){f(".input-icon input").bind("keydown",function(e){16!==e.keyCode&&219!==e.keyCode||(t[e.keyCode]=!0)}).autocomplete({minLength:0,source:function(e,i){!0===t[16]&&!0===t[219]&&i(n)},focus:function(){return!1},select:function(e,i){return delete t[16],delete t[219],this.value+=i.item.value+"}",!1}})},u.saveExpression=function(){var e,t,i=u.expression.mode;u.expr_saved=!1,"oneline"===i&&(u.expression.expr=f(".expression_oneline input").val(),""!==u.expression.expr&&(u.expr_saved=!0)),"conditional"===i&&(t=[],f(".expression_conditional .input-group").each(function(){var e=f(this).find(".input-if input").val(),i=f(this).find(".input-equation input").val();t.push({type:"condition",if:e,then:i})}),e=f(".expression_conditional .input-else input").val(),t.push({type:"else",if:"true",then:e}),u.expression.expr=t,0Choose field...'),f.each(u.fieldList.find(".field"),function(){var e;"static"===f(this).data("group")||f(this).is(i)||(e=f(this).find(".f-name").val(),t.append('"))}),o.builder.append(o.template.clone()),o.builder.find(".or-condition").remove(),o.context.find(".f-visibility").val());try{a=JSON.parse(a)}catch(e){a=!1}"object"==typeof a?f.each(a,function(e,i){var t=!0;f.each(i,function(e,i){o.add(t?"or":"and",null,i),t=!1})}):o.add("or",null,null),o.window.find("span.self-name").text(i.find(".f-name").val()),o.window.show().css({display:"flex"})},o.close=function(){o.window.hide(),o.builder.empty()},o.add=function(e,i,t){(i=null===i?o.builder.find("."+e+"-group").last():i).append(o.window.find(".template ."+e+"-condition").clone());e=i.find(".and-condition").last();null!==t&&"object"==typeof t?(e.find(".p-field").val(t.field),e.find(".p-comparison").val(t.comp).trigger("change"),e.find(".p-value").val(t.value)):e.find(".p-value").val("")},o.validate=function(){var a=!0,e=o.builder.find(".and-condition");return e.find(".validation-error").removeClass("validation-error"),e.each(function(){var e=f(this).find(".p-field"),i=f(this).find(".p-comparison").val(),t=f(this).find(".p-value");[null,""].includes(e.val())&&(e.addClass("validation-error"),a=!1),t.prop("disabled")||""!==t.val()||(t.addClass("validation-error"),a=!1),["5","6","7","8"].includes(i)&&!t.val().match(/^-?\d*[\.,]?\d+$/)&&(t.addClass("validation-error"),a=!1),"9"===i&&""===t.val()&&(t.addClass("validation-error"),a=!1)}),a},o.window.on("click",".cv-action-and",function(e){e.preventDefault(),o.add("and",f(this).prev(),null)}),o.window.on("click",".cv-action-or",function(e){e.preventDefault(),o.add("or",f(this).prev(),null)}),o.window.on("click",".cv-remove",function(e){e.preventDefault(),(1===f(this).closest(".and-group").children().length?f(this).closest(".or-condition"):f(this).parent()).remove()}),o.window.on("change","select.p-comparison",function(e){var i=["1","2"].includes(f(this).val()),t=f(this).next(".p-value");t.prop("disabled",i),i&&t.val("")}),o.window.on("click",".cv-close",function(e){e.preventDefault(),o.close()}),o.window.on("click",".cv-save",function(e){if(e.preventDefault(),!o.validate())return alert("Please correct the form!"),!1;var a=[],n=[],e=(f.each(o.builder.find(".or-condition"),function(){var i=[],t=[];f.each(f(this).find(".and-condition"),function(){var e={field:f(this).find(".p-field").val(),comp:f(this).find(".p-comparison").val(),comp_text:f(this).find(".p-comparison option:selected").text(),value:f(this).find(".p-value").val()};i.push(e),t.push("{"+e.field+"} "+e.comp_text+" "+e.value)}),a.push(i),n.push(" ( "+t.join(" and ")+" ) ")}),n.join(" or ").replaceAll(" "," "));o.context.find(".f-visibility").val(0===a.length?"":JSON.stringify(a)),o.context.find(".f-visibility-readable").val(e),""!==e?o.context.find(".visibility-readable").val("Rule preview: "+e):o.context.find(".visibility-readable").val(""),o.close()}),f("body").on("click",".action-field-visibility",function(){var e=f(this).closest(".field");o.open(e)}),u.init(),u.loadExpression(),u.autocomplete()})}(jQuery); \ No newline at end of file diff --git a/assets/js/colorpicker.min.js b/assets/js/colorpicker.min.js index 4641c0e..b6ae6d3 100644 --- a/assets/js/colorpicker.min.js +++ b/assets/js/colorpicker.min.js @@ -1 +1 @@ -jQuery(document).ready(function($){$("input.wck-color-picker").wpColorPicker()}); \ No newline at end of file +jQuery(document).ready(function(c){c("input.wck-color-picker").wpColorPicker()}); \ No newline at end of file diff --git a/assets/js/datepicker.min.js b/assets/js/datepicker.min.js index f9834be..6e55b8d 100644 --- a/assets/js/datepicker.min.js +++ b/assets/js/datepicker.min.js @@ -1 +1 @@ -jQuery(document).ready(function($){Object.keys(wck_date_picker_options).forEach(function(field_name){$("input.wck-date-picker[name=wck\\["+field_name+"\\]]").datepicker(wck_date_picker_options[field_name])})}); \ No newline at end of file +jQuery(document).ready(function(c){Object.keys(wck_date_picker_options).forEach(function(e){c("input.wck-date-picker[name=wck\\["+e+"\\]]").datepicker(wck_date_picker_options[e])})}); \ No newline at end of file diff --git a/assets/js/deactivation.js b/assets/js/deactivation.js new file mode 100644 index 0000000..c2dec5b --- /dev/null +++ b/assets/js/deactivation.js @@ -0,0 +1,10 @@ +(function ($) { + "use strict"; + $("#deactivate-wc-kalkulator").on("click", function(e){ + if (confirm("This plugin is developed thanks to feedback. Do you want to give me feedback?")) { + e.preventDefault(); + e.stopPropagation(); + window.location.href = "https://docs.google.com/forms/d/e/1FAIpQLSeEHr_kPRsS-foooly3E-SXvs4Ucwx9oXMPSZ1x1hJeYqUC3w/viewform"; + } + }); +})(jQuery); \ No newline at end of file diff --git a/assets/js/deactivation.min.js b/assets/js/deactivation.min.js new file mode 100644 index 0000000..0e53368 --- /dev/null +++ b/assets/js/deactivation.min.js @@ -0,0 +1 @@ +(function($){"use strict";$("#deactivate-wc-kalkulator").on("click",function(e){if(confirm("This plugin is developed thanks to feedback. Do you want to give me feedback?")){e.preventDefault();e.stopPropagation();window.location.href="https://docs.google.com/forms/d/e/1FAIpQLSeEHr_kPRsS-foooly3E-SXvs4Ucwx9oXMPSZ1x1hJeYqUC3w/viewform"}})})(jQuery); \ No newline at end of file diff --git a/assets/js/javascript.cm.js b/assets/js/javascript.cm.js new file mode 100644 index 0000000..0839319 --- /dev/null +++ b/assets/js/javascript.cm.js @@ -0,0 +1,171 @@ +function jsInit() { + + var codemirror = document.querySelector('.CodeMirror').CodeMirror; + + codemirror.on('keyup', function (editor, event) { // eslint-disable-line complexity + var shouldAutocomplete, isAlphaKey = /^[a-zA-Z]$/.test(event.key), token; + if (codemirror.state.completionActive && isAlphaKey) { + return; + } + + token = codemirror.getTokenAt(codemirror.getCursor()); + if ('string' === token.type || 'comment' === token.type) { + return; + } + + shouldAutocomplete = isAlphaKey || '.' === event.key; + + if (shouldAutocomplete) { + codemirror.showHint({hint: wp.CodeMirror.hint.javascript, useGlobalScope: false}); + } + }); +} + +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(wp.CodeMirror); +})(function(codemirror) { + var Pos = codemirror.Pos; + + function forEach(arr, f) { + for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]); + } + + function arrayContains(arr, item) { + if (!Array.prototype.indexOf) { + var i = arr.length; + while (i--) { + if (arr[i] === item) { + return true; + } + } + return false; + } + return arr.indexOf(item) != -1; + } + + function scriptHint(editor, keywords, getToken, options) { + // Find the token at the cursor + var cur = editor.getCursor(), token = getToken(editor, cur); + if (/\b(?:string|comment)\b/.test(token.type)) return; + var innerMode = codemirror.innerMode(editor.getMode(), token.state); + if (innerMode.mode.helperType === "json") return; + token.state = innerMode.state; + + // If it's not a 'word-style' token, ignore the token. + if (!/^[\w$_]*$/.test(token.string)) { + token = {start: cur.ch, end: cur.ch, string: "", state: token.state, + type: token.string == "." ? "property" : null}; + } else if (token.end > cur.ch) { + token.end = cur.ch; + token.string = token.string.slice(0, cur.ch - token.start); + } + + var tprop = token; + // If it is a property, find out what it is a property of. + while (tprop.type == "property") { + tprop = getToken(editor, Pos(cur.line, tprop.start)); + if (tprop.string != ".") return; + tprop = getToken(editor, Pos(cur.line, tprop.start)); + if (!context) var context = []; + context.push(tprop); + } + return {list: getCompletions(token, context, keywords, options), + from: Pos(cur.line, token.start), + to: Pos(cur.line, token.end)}; + } + + function javascriptHint(editor, options) { + return scriptHint(editor, javascriptKeywords, + function (e, cur) {return e.getTokenAt(cur);}, + options); + }; + codemirror.registerHelper("hint", "javascript", javascriptHint); + + function getCoffeeScriptToken(editor, cur) { + // This getToken, it is for coffeescript, imitates the behavior of + // getTokenAt method in javascript.js, that is, returning "property" + // type and treat "." as independent token. + var token = editor.getTokenAt(cur); + if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') { + token.end = token.start; + token.string = '.'; + token.type = "property"; + } + else if (/^\.[\w$_]*$/.test(token.string)) { + token.type = "property"; + token.start++; + token.string = token.string.replace(/\./, ''); + } + return token; + } + + function coffeescriptHint(editor, options) { + return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options); + } + codemirror.registerHelper("hint", "coffeescript", coffeescriptHint); + + var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight " + + "toUpperCase toLowerCase split concat match replace search").split(" "); + var arrayProps = ("length concat join splice push pop shift unshift slice reverse sort indexOf " + + "lastIndexOf every some filter forEach map reduce reduceRight ").split(" "); + var funcProps = "prototype apply call bind".split(" "); + var javascriptKeywords = ("break case catch class const continue debugger default delete do else export extends false finally for function " + + "if in import instanceof new null return super switch this throw true try typeof var void while with yield").split(" "); + var coffeescriptKeywords = ("and break catch class continue delete do else extends false finally for " + + "if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" "); + + function forAllProps(obj, callback) { + if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) { + for (var name in obj) callback(name) + } else { + for (var o = obj; o; o = Object.getPrototypeOf(o)) + Object.getOwnPropertyNames(o).forEach(callback) + } + } + + function getCompletions(token, context, keywords, options) { + var found = [], start = token.string, global = options && options.globalScope || window; + function maybeAdd(str) { + if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str); + } + function gatherCompletions(obj) { + if (typeof obj == "string") forEach(stringProps, maybeAdd); + else if (obj instanceof Array) forEach(arrayProps, maybeAdd); + else if (obj instanceof Function) forEach(funcProps, maybeAdd); + forAllProps(obj, maybeAdd) + } + + if (context && context.length) { + // If this is a property, see if it belongs to some object we can + // find in the current environment. + var obj = context.pop(), base; + base = global.jQuery(); + while (base != null && context.length) + base = base[context.pop().string]; + if (base != null) gatherCompletions(base); + } else { + // If not, just look in the global object, any local scope, and optional additional-context + // (reading into JS mode internals to get at the local and global variables) + for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name); + for (var c = token.state.context; c; c = c.prev) + for (var v = c.vars; v; v = v.next) maybeAdd(v.name) + for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name); + if (options && options.additionalContext != null) + for (var key in options.additionalContext) + maybeAdd(key); + if (!options || options.useGlobalScope !== false) + gatherCompletions(global); + forEach(keywords, maybeAdd); + } + return found; + } +}); + diff --git a/assets/js/javascript.cm.min.js b/assets/js/javascript.cm.min.js new file mode 100644 index 0000000..507ee5c --- /dev/null +++ b/assets/js/javascript.cm.min.js @@ -0,0 +1 @@ +function jsInit(){var o=document.querySelector(".CodeMirror").CodeMirror;o.on("keyup",function(t,e){var r,n=/^[a-zA-Z]$/.test(e.key);o.state.completionActive&&n||("string"===(r=o.getTokenAt(o.getCursor())).type||"comment"===r.type||!n&&"."!==e.key||o.showHint({hint:wp.CodeMirror.hint.javascript,useGlobalScope:!1}))})}!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(wp.CodeMirror)}(function(l){var f=l.Pos;function d(t,e){for(var r=0,n=t.length;ro.ch&&(i.end=o.ch,i.string=i.string.slice(0,o.ch-i.start)):i={start:o.ch,end:o.ch,string:"",state:i.state,type:"."==i.string?"property":null};for(var a=i;"property"==a.type;){if("."!=(a=r(t,f(o.line,a.start))).string)return;var a=r(t,f(o.line,a.start)),c=c||[];c.push(a)}return{list:function(t,e,r,n){var o=[],i=t.string,s=n&&n.globalScope||window;function a(t){0!=t.lastIndexOf(i,0)||function(t,e){if(Array.prototype.indexOf)return-1!=t.indexOf(e);for(var r=t.length;r--;)if(t[r]===e)return 1}(o,t)||o.push(t)}function c(t){"string"==typeof t?d(h,a):t instanceof Array?d(g,a):t instanceof Function&&d(y,a);var e=a;if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}if(e&&e.length){var l;e.pop();for(l=s.jQuery();null!=l&&e.length;)l=l[e.pop().string];null!=l&&c(l)}else{for(var f=t.state.localVars;f;f=f.next)a(f.name);for(var p=t.state.context;p;p=p.prev)for(f=p.vars;f;f=f.next)a(f.name);for(f=t.state.globalVars;f;f=f.next)a(f.name);if(n&&null!=n.additionalContext)for(var u in n.additionalContext)a(u);n&&!1===n.useGlobalScope||c(s),d(r,a)}return o}(i,c,e,n),from:f(o.line,i.start),to:f(o.line,i.end)}}}}function n(t,e){t=t.getTokenAt(e);return e.ch==t.start+1&&"."==t.string.charAt(0)?(t.end=t.start,t.string=".",t.type="property"):/^\.[\w$_]*$/.test(t.string)&&(t.type="property",t.start++,t.string=t.string.replace(/\./,"")),t}l.registerHelper("hint","javascript",function(t,e){return r(t,o,function(t,e){return t.getTokenAt(e)},e)}),l.registerHelper("hint","coffeescript",function(t,e){return r(t,i,n,e)});var h="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),g="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),y="prototype apply call bind".split(" "),o="break case catch class const continue debugger default delete do else export extends false finally for function if in import instanceof new null return super switch this throw true try typeof var void while with yield".split(" "),i="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")}); \ No newline at end of file diff --git a/assets/js/notice.min.js b/assets/js/notice.min.js index 6303ab1..b278d5c 100644 --- a/assets/js/notice.min.js +++ b/assets/js/notice.min.js @@ -1 +1 @@ -(function($){"use strict";$(document).ready(function($){$(document).on("click",".notice.wck-notice button.notice-dismiss",function(e){e.preventDefault();$.post(wck_ajax_object.ajax_url,{action:"wck_notice_dismiss",_wck_ajax_nonce:wck_ajax_object._wck_ajax_nonce,_wck_notice_dismiss:true},function(response){console.log(response)})})})})(jQuery); \ No newline at end of file +!function(){"use strict";jQuery(document).ready(function(n){n(document).on("click",".notice.wck-notice button.notice-dismiss",function(c){c.preventDefault(),n.post(wck_ajax_object.ajax_url,{action:"wck_notice_dismiss",_wck_ajax_nonce:wck_ajax_object._wck_ajax_nonce,_wck_notice_dismiss:!0},function(c){console.log(c)})})})}(); \ No newline at end of file diff --git a/assets/js/rangedatepicker.min.js b/assets/js/rangedatepicker.min.js index f5f5610..b2b318b 100644 --- a/assets/js/rangedatepicker.min.js +++ b/assets/js/rangedatepicker.min.js @@ -1 +1 @@ -(function($){"use strict";$(document).ready(function($){var from={};var to={};var default_required={};Object.keys(wck_range_date_picker_options).forEach(function(field_name){default_required[field_name]=$("input.wck-range-date-picker[name=wck\\["+field_name+"\\]\\[from\\]]").prop("required");from[field_name]=$("input.wck-range-date-picker[name=wck\\["+field_name+"\\]\\[from\\]]").datepicker(wck_range_date_picker_options[field_name]).on("change",function(){to[field_name].datepicker("option","minDate",getDate(this));if(!default_required[field_name]){if(this.value===""){$(to[field_name]).prop("required",false)}else{$(to[field_name]).prop("required",true)}}});to[field_name]=$("input.wck-range-date-picker[name=wck\\["+field_name+"\\]\\[to\\]]").datepicker(wck_range_date_picker_options[field_name]).on("change",function(){from[field_name].datepicker("option","maxDate",getDate(this))})});function getDate(element){var date;try{date=$.datepicker.parseDate("yy-mm-dd",element.value)}catch(error){date=null}return date}})})(jQuery); \ No newline at end of file +!function(){"use strict";jQuery(document).ready(function(r){var t={},n={},a={};function c(e){var t;try{t=r.datepicker.parseDate("yy-mm-dd",e.value)}catch(e){t=null}return t}Object.keys(wck_range_date_picker_options).forEach(function(e){a[e]=r("input.wck-range-date-picker[name=wck\\["+e+"\\]\\[from\\]]").prop("required"),t[e]=r("input.wck-range-date-picker[name=wck\\["+e+"\\]\\[from\\]]").datepicker(wck_range_date_picker_options[e]).on("change",function(){n[e].datepicker("option","minDate",c(this)),a[e]||(""===this.value?r(n[e]).prop("required",!1):r(n[e]).prop("required",!0))}),n[e]=r("input.wck-range-date-picker[name=wck\\["+e+"\\]\\[to\\]]").datepicker(wck_range_date_picker_options[e]).on("change",function(){t[e].datepicker("option","maxDate",c(this))})})})}(); \ No newline at end of file diff --git a/assets/js/wckalkulator.js b/assets/js/wckalkulator.js index d8310c2..dff9011 100644 --- a/assets/js/wckalkulator.js +++ b/assets/js/wckalkulator.js @@ -111,9 +111,12 @@ function calculatePrice() { if (shouldCalculatePrice) { var data = $(_form).serialize().replace('add-to-cart', 'atc') + '&action=wckalkulator_calculate_price' + '&_wck_ajax_nonce=' + wck_ajax_object._wck_ajax_nonce; - $.each($(_form + " input[type=file].wck_imageupload"), function () { + $.each($(_form + " input[type=file].wck_imageupload:enabled"), function () { data += "&" + $(this).attr("name") + "=" + (($(this)[0].files.length === 1) ? $(this)[0].files[0].size : 0); }); + $("form.cart [name^=wck]:disabled").each(function(){ + data += "&" + $(this).attr("name") + "=0"; + }); $.post(wck_ajax_object.ajax_url, data, function (response) { if (response) { $("#wckalkulator-price").html(response); @@ -184,11 +187,20 @@ } lastGroup = group; }); + $("form.cart [name^=wck]:disabled").each(function(){ + var input = $("").attr("type", "hidden").attr("name", $(this).attr("name")).val(""); + $(_form).append($(input)); + }); }); }); + })(jQuery); +var wck = function(fieldName) { + return jQuery("[name*='wck[" + fieldName + "]']"); +} + /* https://github.com/bugwheels94/math-expression-evaluator/ */ diff --git a/assets/js/wckalkulator.min.js b/assets/js/wckalkulator.min.js index b4ae083..43eb665 100644 --- a/assets/js/wckalkulator.min.js +++ b/assets/js/wckalkulator.min.js @@ -1 +1 @@ -(function($){"use strict";$(document).ready(function($){var userTimeout;var _form=wck_ajax_object.form;var shouldCalculatePrice=wck_ajax_object._wck_has_expression==="1";var CV={};if(wck_ajax_object.hasOwnProperty("_wck_visibility_rules")&&wck_ajax_object._wck_visibility_rules!==null){$.each(wck_ajax_object._wck_visibility_rules,function(fieldName,options){$("[name*='wck["+fieldName+"]']").prop("disabled",true).hide().closest("tr").hide();CV[fieldName]=options})}function updateUI(){var formFields={};jQuery(_form+" [name^=wck").each(function(){var fieldName=$(this).attr("name").replace("wck[","").replace("]","").replace("[]","");formFields["{"+fieldName+"}"]=$(this).val();if(CV.hasOwnProperty(fieldName)){toggleField(fieldName,CV[fieldName])}});$("span.wck-dynamic").each(function(){var expr=$(this).data("expr");var vars=expr.match(/{[^}]+}/gm);vars.forEach(function(v,i){expr=expr.replaceAll(v,formFields[v])});$(this).text(Math.round(Mexp.eval(expr)*100)/100)})}function getFieldValue(field){if(field.prop("type")==="checkbox"||field.prop("type")==="radio"){var value=field.is(":checked")?field.val():"";var n=value.indexOf(":");if(n!==-1){value=value.substring(0,n)}return value}return field.val()}function toggleField(fieldName,rules){var state=null;$.each(rules,function(i,or_rule){$.each(or_rule,function(j,and_rule){var fields=$("[name*='wck["+and_rule.field+"]']");if(fields.length){fields.each(function(){var s=compare(getFieldValue($(this)),and_rule.comp,and_rule.value);if(s===true){state=true}return state!==false})}return state!==false});if(state===true){$("[name*='wck["+fieldName+"]']").prop("disabled",false).show().closest("tr").show();return false}});if(state!==true){$("[name*='wck["+fieldName+"]']").prop("disabled",true).hide().closest("tr").hide();return false}}function compare(valueA,comp,valueB){try{switch(comp){case"1":return valueA==="";case"2":return valueA!=="";case"3":return valueA===valueB;case"4":return valueA!==valueB;case"5":case"6":case"7":case"8":var numA=Math.round(parseFloat(valueA)*1e3)/1e3;var numB=Math.round(parseFloat(valueB)*1e3)/1e3;case"5":return numAnumB;case"8":return numA>=numB;case"9":return valueA.includes(valueB)}}catch(e){return false}return false}function calculatePrice(){if(shouldCalculatePrice){var data=$(_form).serialize().replace("add-to-cart","atc")+"&action=wckalkulator_calculate_price"+"&_wck_ajax_nonce="+wck_ajax_object._wck_ajax_nonce;$.each($(_form+" input[type=file].wck_imageupload"),function(){data+="&"+$(this).attr("name")+"="+($(this)[0].files.length===1?$(this)[0].files[0].size:0)});$.post(wck_ajax_object.ajax_url,data,function(response){if(response){$("#wckalkulator-price").html(response)}})}}$("input.wck_imageupload").on("change",function(e){var size=$(this)[0].files[0].size;if(size>$(this).data("maxfilesize")*1e6){alert(wck_ajax_object._wck_i18n_maxfilesize+" Max. "+$(this).data("maxfilesize")+"MB");$(this).val("")}});$(document).on("change",_form+" input, "+_form+" select, "+_form+" textarea",function(){updateUI();clearTimeout(userTimeout);userTimeout=setTimeout(function(){$("#wckalkulator-price").html('...');calculatePrice()},1e3)});updateUI();calculatePrice();$("span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"});$("input[type=checkbox][data-type='checkboxgroup']").change(function(e){var group=$(this).data("group");var required=$(this).data("required")===1;var limit=$(this).data("limit");var checked_count=$("input[type=checkbox][data-group='"+group+"']:checked").length;if(limit>0){if(checked_count>limit){$(this).prop("checked",false).blur()}}if(required&&checked_count===0){$(this).prop("checked",true)}checked_count=$("input[type=checkbox][data-group='"+group+"']:checked").length;if(checked_count>0){$("input[type=checkbox][data-group="+group+"]").get(0).setCustomValidity("")}});$(_form).submit(function(e){var lastGroup="";var _form=$(this).get(0);$("input[type=checkbox][data-type='checkboxgroup']").each(function(){var group=$(this).data("group");if(group!==lastGroup){if($(this).data("required")===1&&$("input[type=checkbox][data-group="+group+"]:checked").length===0){$("input[type=checkbox][data-group="+group+"]").get(0).setCustomValidity(wck_ajax_object._wck_i18n_required);_form.reportValidity();e.preventDefault();return false}}lastGroup=group})})})})(jQuery);!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Mexp=e():t.Mexp=e()}(self,function(){return t={28:(t,e,a)=>{var n=a(733);n.prototype.formulaEval=function(){"use strict";for(var t,e,a,n=[],o=this.value,p=0;p"+e.value+""+o[p].show+""+t.value+"",type:10}):n.push({value:(1!=e.type?"(":"")+e.value+(1!=e.type?")":"")+""+t.value+"",type:1})):2===o[p].type||9===o[p].type?(t=n.pop(),e=n.pop(),n.push({value:(1!=e.type?"(":"")+e.value+(1!=e.type?")":"")+o[p].show+(1!=t.type?"(":"")+t.value+(1!=t.type?")":""),type:o[p].type})):12===o[p].type&&(t=n.pop(),e=n.pop(),a=n.pop(),n.push({value:o[p].show+"("+a.value+","+e.value+","+t.value+")",type:12}));return n[0].value},t.exports=n},618:(t,e,a)=>{"use strict";var n=a(178);function o(t,e){for(var a=0;ag.length-2?g.length-1:t.length-v;a>0;a--)if(void 0!==g[a])for(o=0;o0&&a{"use strict";var e=function(t){this.value=t};e.math={isDegree:!0,acos:function(t){return e.math.isDegree?180/Math.PI*Math.acos(t):Math.acos(t)},add:function(t,e){return t+e},asin:function(t){return e.math.isDegree?180/Math.PI*Math.asin(t):Math.asin(t)},atan:function(t){return e.math.isDegree?180/Math.PI*Math.atan(t):Math.atan(t)},acosh:function(t){return Math.log(t+Math.sqrt(t*t-1))},asinh:function(t){return Math.log(t+Math.sqrt(t*t+1))},atanh:function(t){return Math.log((1+t)/(1-t))},C:function(t,a){var n=1,o=t-a,p=a;p{var n=a(618);n.prototype.toPostfix=function(){"use strict";for(var t,e,a,o,p,h=[],u=[{value:"(",type:4,pre:0}],s=this.value,r=1;ra)u.push(t);else{for(;a>=o&&!i||i&&o{var n=a(477);n.prototype.postfixEval=function(t){"use strict";(t=t||{}).PI=Math.PI,t.E=Math.E;for(var e,a,o,p=[],h=this.value,u=void 0!==t.n,s=0;s1)throw new n.Exception("Uncaught Syntax error");return p[0].value>1e15?"Infinity":parseFloat(p[0].value.toFixed(15))},n.eval=function(t,e,a){return void 0===e?this.lex(t).toPostfix().postfixEval():void 0===a?void 0!==e.length?this.lex(t,e).toPostfix().postfixEval():this.lex(t).toPostfix().postfixEval(e):this.lex(t,e).toPostfix().postfixEval(a)},t.exports=n}},e={},a=function a(n){var o=e[n];if(void 0!==o)return o.exports;var p=e[n]={exports:{}};return t[n](p,p.exports,a),p.exports}(28),a;var t,e,a}); \ No newline at end of file +!function(){"use strict";jQuery(document).ready(function(h){var e,t=wck_ajax_object.form,a="1"===wck_ajax_object._wck_has_expression,i={};function n(){var o={};jQuery(t+" [name^=wck").each(function(){var e=h(this).attr("name").replace("wck[","").replace("]","").replace("[]","");if(o["{"+e+"}"]=h(this).val(),i.hasOwnProperty(e)){var a=e,e=i[e],n=null;if(h.each(e,function(e,t){if(h.each(t,function(e,t){var a=h("[name*='wck["+t.field+"]']");return a.length&&a.each(function(){var e=function(e,t,a){try{switch(t){case"1":return""===e;case"2":return""!==e;case"3":return e===a;case"4":return e!==a;case"5":case"6":case"7":case"8":var n=Math.round(1e3*parseFloat(e))/1e3,o=Math.round(1e3*parseFloat(a))/1e3;case"5":return n1e6*h(this).data("maxfilesize")&&(alert(wck_ajax_object._wck_i18n_maxfilesize+" Max. "+h(this).data("maxfilesize")+"MB"),h(this).val(""))}),h(document).on("change",t+" input, "+t+" select, "+t+" textarea",function(){n(),clearTimeout(e),e=setTimeout(function(){h("#wckalkulator-price").html('...'),o()},1e3)}),n(),o(),h("span.wck-field-tip").tipTip({attribute:"title",defaultPosition:"left"}),h("input[type=checkbox][data-type='checkboxgroup']").change(function(e){var t=h(this).data("group"),a=1===h(this).data("required"),n=h(this).data("limit"),o=h("input[type=checkbox][data-group='"+t+"']:checked").length;0").attr("type","hidden").attr("name",h(this).attr("name")).val("");h(n).append(h(e))})})})}();var wck=function(e){return jQuery("[name*='wck["+e+"]']")};!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Mexp=t():e.Mexp=t()}(self,function(){return n={28:(e,t,a)=>{a=a(733);a.prototype.formulaEval=function(){"use strict";for(var e,t,a,n=[],o=this.value,h=0;h"+t.value+""+o[h].show+""+e.value+"",type:10}):n.push({value:(1!=t.type?"(":"")+t.value+(1!=t.type?")":"")+""+e.value+"",type:1})):2===o[h].type||9===o[h].type?(e=n.pop(),t=n.pop(),n.push({value:(1!=t.type?"(":"")+t.value+(1!=t.type?")":"")+o[h].show+(1!=e.type?"(":"")+e.value+(1!=e.type?")":""),type:o[h].type})):12===o[h].type&&(e=n.pop(),t=n.pop(),a=n.pop(),n.push({value:o[h].show+"("+a.value+","+t.value+","+e.value+")",type:12}));return n[0].value},e.exports=a},618:(e,t,a)=>{"use strict";var Q=a(178);function B(e,t){for(var a=0;aF.length-2?F.length-1:e.length-i;0{"use strict";function i(e){this.value=e}i.math={isDegree:!0,acos:function(e){return i.math.isDegree?180/Math.PI*Math.acos(e):Math.acos(e)},add:function(e,t){return e+t},asin:function(e){return i.math.isDegree?180/Math.PI*Math.asin(e):Math.asin(e)},atan:function(e){return i.math.isDegree?180/Math.PI*Math.atan(e):Math.atan(e)},acosh:function(e){return Math.log(e+Math.sqrt(e*e-1))},asinh:function(e){return Math.log(e+Math.sqrt(e*e+1))},atanh:function(e){return Math.log((1+e)/(1-e))},C:function(e,t){var a=1,n=e-t,o=t;t{var r=a(618);r.prototype.toPostfix=function(){"use strict";for(var e,t,a,n=[],o=[{value:"(",type:4,pre:0}],h=this.value,i=1;i{var p=a(477);p.prototype.postfixEval=function(e){"use strict";(e=e||{}).PI=Math.PI,e.E=Math.E;for(var t,a,n,o=[],h=this.value,i=void 0!==e.n,A=0;A - + @@ -27,11 +27,11 @@ - + - + - +
    @@ -48,7 +48,7 @@
    +
    diff --git a/docs/.retype/changelog/index.html b/docs/.retype/changelog/index.html index b44d739..935258b 100644 --- a/docs/.retype/changelog/index.html +++ b/docs/.retype/changelog/index.html @@ -3,7 +3,7 @@ - + @@ -11,7 +11,7 @@ CHANGELOG | Product fields and price calculator - + @@ -20,21 +20,21 @@ - + - + - + - + - +
    @@ -51,7 +51,7 @@
    +
    @@ -266,6 +266,29 @@

    CHANGELOG

    +

    2022-08-05 +v.1.5.0

    +
      +
    • fieldset's options (toggle default price blocks)
    • +
    • new field: formula value
    • +
    • bug fixes
    • +
    +

    2022-07-23 +v.1.4.6

    +
      +
    • added is_selected() function
    • +
    • bug fixes in multi checkbox
    • +
    +

    2022-07-23 +v.1.4.5

    +
      +
    • conditional visibility support for multi checkbox
    • +
    +

    2022-07-23 +v.1.4.4

    +
      +
    • bug fixes
    • +

    2022-07-22 v.1.4.3

      diff --git a/docs/.retype/index.html b/docs/.retype/index.html index 5fd6b5a..fdc9b22 100644 --- a/docs/.retype/index.html +++ b/docs/.retype/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
      @@ -51,7 +51,7 @@
      +
      @@ -276,7 +276,7 @@

      Extra product fields can be used to calculate product price and save information in order details.

      • Absolutely FREE plugin with PRO features
      • -
      • 22 field types to get customer input
      • +
      • 23 field types to get customer input
      • Price calculation based on formula, conditional expression or price add-ons.
      @@ -352,7 +352,8 @@

      19. Select 20. Textarea 21. Text input -22. Image upload +22. Image upload +23. Formula Value

      @@ -436,6 +437,13 @@

      The customer can edit product options after adding to cart.

      + +

      + # + Integration with ACF +

      +
      +

      You can use acf('field_name') function to get ACF field value in custom price formula.

      # @@ -448,7 +456,9 @@

    • translation
    • virtual and variable products are supported
    • product regular and sale prices are supported
    • -
    • product tags
    • +
    • product tags and attributes
    • +
    • use product attributes in formulas
    • +
    • ACF supported

    diff --git a/docs/.retype/news/index.html b/docs/.retype/news/index.html index 60edcfd..e312b41 100644 --- a/docs/.retype/news/index.html +++ b/docs/.retype/news/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    @@ -51,7 +51,7 @@
    +
    diff --git a/docs/.retype/resources/js/config.js b/docs/.retype/resources/js/config.js index 274c0ca..c0478cd 100644 --- a/docs/.retype/resources/js/config.js +++ b/docs/.retype/resources/js/config.js @@ -1 +1 @@ -var __DOCS_CONFIG__ = {"id":"F6vfbAI4s5875iJ/Oot207b8g5aupAnuPud","key":"ShZWun5GIbAeWS/CYtFJRpT9Hc6F5A+3aqwtWHkpYt4.t44YcGcJW60zS9F7uUjcqY9nnfca4I1eS87f2x8D2dAKfcVolZs1TsmJozG/XfH5YZvuuySLRbbyGyAdaEegSg.125","base":"/","host":"wckalkulator.com","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"2.3.0.712060334355","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties","shortLabel":"Props"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"WC Kalkulator","s":""},{"n":"news","l":"News","s":""},{"n":"usermanual","l":"User Manual","c":false,"o":true,"i":[{"n":"about","l":"About the Plugin","s":""},{"n":"installation","l":"Installation","s":""},{"n":"fields","l":"Field Types","s":""},{"n":"calculation-types","l":"Calculation Modes","s":""},{"n":"expression-syntax","l":"Expression Syntax","s":""},{"n":"example-expressions","l":"Formula Examples","s":""},{"n":"usage","l":"Usage","s":""},{"n":"advanced_usage","l":"Advanced Usage","s":""},{"n":"templates","l":"Templates & Layouts","s":""},{"n":"inventory","l":"Stock Management","s":""},{"n":"import_export","l":"Import/Export","s":""},{"n":"uninstall","l":"Uninstallation","s":""},{"n":"videos","l":"Video Tutorials","s":""}],"s":""},{"n":"changelog","l":"CHANGELOG","s":""}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["/"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false}}; +var __DOCS_CONFIG__ = {"id":"v5kgSSnU2DMVQFD/JIlj3ks8ll545196UrI","key":"KwimltaMyHq+xEMjynzUFrPhynqem7aelmsGeAb44/U.RB9zjyuJ+I8mEKXv5AJELy9genBn6jwi6Tb/iUkxPc9geAUZhC+/L8z1GDtouPLmem6e7WyXwnPqLP4BiG6OeQ.78","base":"/","host":"wckalkulator.com","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"2.3.0.713601965991","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties","shortLabel":"Props"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"WC Kalkulator","s":""},{"n":"news","l":"News","s":""},{"n":"usermanual","l":"User Manual","c":false,"o":true,"i":[{"n":"about","l":"About the Plugin","s":""},{"n":"installation","l":"Installation","s":""},{"n":"fields","l":"Field Types","s":""},{"n":"calculation-types","l":"Calculation Modes","s":""},{"n":"expression-syntax","l":"Expression Syntax","s":""},{"n":"example-expressions","l":"Formula Examples","s":""},{"n":"usage","l":"Usage","s":""},{"n":"advanced_usage","l":"Advanced Usage","s":""},{"n":"templates","l":"Templates & Layouts","s":""},{"n":"acf","l":"ACF support","s":""},{"n":"inventory","l":"Stock Management","s":""},{"n":"import_export","l":"Import/Export","s":""},{"n":"uninstall","l":"Uninstallation","s":""},{"n":"videos","l":"Video Tutorials","s":""}],"s":""},{"n":"changelog","l":"CHANGELOG","s":""}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["/"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false}}; diff --git a/docs/.retype/resources/js/search.json b/docs/.retype/resources/js/search.json index 2d90aba..22b20ae 100644 --- a/docs/.retype/resources/js/search.json +++ b/docs/.retype/resources/js/search.json @@ -1 +1 @@ -[[{"l":"WC Kalkulator"},{"l":"Custom Fields and Price Calculator for WooCommerce","p":["WC Kalkulator (WCK) is a WordPress plugin which extends the WooCommerce to use custom extra fields with products and orders. Extra product fields can be used to calculate product price and save information in order details.","Absolutely FREE plugin with PRO features","22 field types to get customer input","Price calculation based on formula, conditional expression or price add-ons.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!","You can sell products by anything. You are not limited to sell only by length, area, volume, etc. You decide how the prices will be calculated."]},{"i":"what-makes-wc-kalkulator-unique-","l":"What makes WC Kalkulator unique ?","p":["When designing the functionality of the plugin, we wanted to obtain software that would be easy to use and highly configurable and suitable for any type of store.","The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields are not used in formulas, but you can use it to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"i":"22-field-types-all-free","l":"22 Field Types (ALL FREE)"},{"l":"Definitions","p":["Field- is used to get user's input on the woocommerce product page. Custom Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset (set of custom product fields) which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the woocommerce custom price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the woocommerce custom price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"i":"formulaexpression-builder","l":"Formula/Expression Builder","p":["Use field's values as variables to calculate product price. Drag&drop conditional statements."]},{"l":"Price Add-Ons","p":["Use custom fields to make Product Add-Ons. This feature is experimental and will be continued in the next releases."]},{"l":"Display Fields","p":["Assign fields to products, categories or product tags. Include/exclude options. Mass assignment."]},{"l":"Validation","p":["Each field has built-in validation tests on user input. You can define additional conditions."]},{"l":"Protected Formula","p":["The price is calculated server-side only, so the Client can't see exact expression."]},{"l":"Advanced Customization","p":["Field HTML templates can be overloaded in your theme file. Each field has CSS class to set custom styles."]},{"l":"Functions","p":["You can use basic math functions in the formula. Fields such as Multi-checkbox, Date Picker, Date Range Picker has additional functions to get sum, min, max value or get date, days between dates values as number."]},{"l":"Global Parameters","p":["You can define numeric variable across all fieldsets. You can modify all prices by global parameters."]},{"l":"Cart","p":["The customer can edit product options after adding to cart."]},{"l":"Compatibility","p":["multisite mode is supported","product shortcodes","translation","virtual and variable products are supported","product regular and sale prices are supported","product tags"]},{"l":"More Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HMTL template of every field can be overridden in a theme directory","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"News","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"i":"version-140-has-been-released","l":"Version 1.4.0 has been released","p":["Update: 2022-07-18","[x] new formula builder[x] apply filters on td elements in field's templates[x] new assignment type: product attribute[x] toggle button to publish/unpublish fieldsets quickly[x] support for stock management and stock reduction multiplier[x] layouts feature - you can choose one or two column layout"]},{"i":"version-130-has-been-released","l":"Version 1.3.0 has been released","p":["Update: 2022-07-04","Price Add-ons","Image upload field","Use dynamic formula in a static field's contents","Settings page","Strlen() function to get a text length"]},{"i":"version-120-has-been-released","l":"Version 1.2.0 has been released","p":["Update: 2022-06-13","many new fields","static fields","field's built-in modifiers","global parameters","functions in expressions","customer can edit product in the cart"]},{"i":"what-we-are-working-on","l":"What we are working on?","p":["a new field: file upload,","add a price parameter to all fields and use the value in the formula,","add global fields, so the product could have a one fieldset with calculations and global fields.","add priority for fieldsets","allow editing fields in the user's cart,","apply fieldsets to categories,","Apply for a new feature by clicking the link at the top.","assign to all products/categories, except ...","customizable field's template","mass assignment of fieldsets to products,","some bug fixes reported by users","stock management for numeric fields,","Update: 2022-01-21","Update: 2022-02-18","We are working on new features:","We released new version 1.1.0 which gives more flexibility and performance. We have also added new features, blow:"]}],[{"l":"About the Plugin","p":["The plugin extends the Woocommerce store with the ability to add your own fields to the product page. Almost all fields are used in formulas to calculate a custom price for a product. The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields can be used to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"l":"Definitions","p":["Field- is used to get user's input on the product page. Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the product price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"l":"Requirements","p":["Minimum tested version, but not recommended","Wordpress v.5.0","Woocommerce v.3.5","Maximum tested version","Wordpress v.6.0","Woocommerce v.6.7","Recommended version","We strongly recommend to use most recent versions of Wordpress and Woocommerce. There is no restriction to PHP version, but please note that PHP below 7.4 is marked as end-of-life. We recommend using PHP7.4 and above. PHP7.4 is supported in Wordpress v5.3 and above.","Supported PHP versions PHP compatibility and Wordpress versions"]},{"l":"Dependencies","p":["Symfony ExpressionLanguage Component","jQuery, jQuery UI (built in Wordpress Core)","Math Expression Evaluator by bugwheels94"]},{"l":"Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","dynamic formula in a static field's contents","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HTML template of every field can be overridden in a theme directory","image upload field (use file size in formula/expression)","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"Conflict with other plugins","p":["This plugin has been tested only with Wordpress and Woocommerce without additional plugins. Note that there may be a conflict with plugins that modifies the product price and user's cart, or has similar functionality. This section will be updated and conflicts will be resolved.","We know about issue with displaying prices in a cart page. In some themes there's an issue with cart page. Theme should display cart item price instead of product price. The plugin modifies cart items, but not products itself."]}],[{"l":"Installation","p":["Installation process is the same as for other plugins. The plugin does not require configuration, it is ready to use. The plugin creates new post type - Fieldset.","The plugin adds new menu in Products> WCK Fieldsets.","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Field Types","p":["The plugin comes with several built-in fields to be used on the product page. Please contact us if you need to add new field types. We are working on the ability to build custom fields as extensions for the plugin. We would like to meet your expectations as much as possible.","Each field has its own parameters, but some parameters are the same for every field. See the list below:","Parameter","Description","Name","Unique field name used in plugin code. It must consist of A-Z, a-z or underscore. For example: product_width, table_height, etc.","Title","Field name showed to the User. For example: Product width, Table height","Hint for Customer","Help message showed in tooltip. For example: Please choose product color from the list.","CSS Class","CSS class applied to the HTML code of the field. You can define additional styles in custom .css files in theme.","Price","If the field is filled in by the customer, the price will be used in the formula. Otherwise the price is 0. This parameter is not present for the: number field and select field.","See Templates section to know how to modify HTML code of any field."]},{"l":"Number","p":["Number Field is the basic field to use in the plugin. It is standard single-line input field, which takes a numeric value and can be used in a formula/expression.","This field is required by default.","Parameter","Description","Min. value","The minimum value of the field","Max. value","The maximum value of the field","Default value","Initial value of the field. This value is loaded into field when user opens the product page."]},{"l":"Select","p":["Select Field is a standard dropdown field. You must define numeric value of options, because this field is used in the formula/expression.","This field is required by default."]},{"l":"Checkbox","p":["Parameter","Description","Default state","Default state of checkbox. Select this option if you want the field to be checked by default"]},{"l":"Color Picker","p":["Color Picker is a standard input text field with jQuery wpColorPicker and IRIS. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required"]},{"l":"Date Picker","p":["Date Picker is a standard input text field with jQuery UI Datepicker. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Range Date Picker","p":["Range Date Picker includes two Date Picker fields connected with each other.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Dropdown","p":["Dropdown field is almost the same as Select field. This field accepts text values.","Parameter","Description","Required","Select this option to make the field required."]},{"l":"Text","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Textarea","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"E-mail","p":["E-mail field is used to get e-mail address from the Customer input. This field has an e-mail validation test.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Radio","p":["Radio field is used to display a group of radio buttons. It has similar funcationality to the Select field, so u can use option's values in the formula/expression.","This field is required by default."]},{"i":"checkbox-group-multi-checkbox","l":"Checkbox Group (Multi Checkbox)","p":["Checkbox Group is used to display a group of checkboxes. It is possible to define selection limit (i.e. customer can choose max 2 options). Multi Checkbox can be used in the expression, for example: is_selected({multi_cb}; 10) checks if user selected the option with value \"10\". You can also use built-in variables {multi_cb:min}(minimal selected value), {multi_cb:max}(maximal selected value), {multi_cb:sum}(sum of selected values)"]},{"l":"Color Swatches","p":["Color Swatches are shown as square thumbnails, which may be selected by a customer. Each options has a numeric value to use in a formula."]},{"l":"Image Swatches","p":["Image Swatches works like Color Swatches, but you can define images instead of colors."]},{"l":"Image Select","p":["Image Select works similar to Image Swatches, but you can define Caption/Title for each image option."]},{"i":"static-html","l":"Static: HTML","p":["Displays content from a HTML code. It is filtered by wp_kses_post. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-attachment","l":"Static: Attachment","p":["You can add file/media attachment, to be downloaded by the Customer on product page."]},{"i":"static-heading","l":"Static: Heading","p":["You can add heading h1-h6 in product page"]},{"i":"static-paragraph","l":"Static: Paragraph","p":["You can add text in paragraph tag in product page. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-hidden","l":"Static: Hidden","p":["You can add hidden input fields to store predefined values. This field does not accept user input."]},{"i":"static-link","l":"Static: Link","p":["You can add link to any website, file attachment, URL."]},{"l":"Image upload","p":["You can get image file from the customer. Files are saved in customer directory on checkout. Go to Settings Page to set cron jobs invervals. Files are uploaded to the temp directory and will be deleted after time. Files will be kept longer if the customer places an order. Customer files will be deleted after 360 days (default option), but you can set your own interval.","You can use file size [MB] parameter in formulas.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Calculation Modes","p":["The Plugin comes with several calculation modes. You can choose one of mentioned below:","OFF- price calculation is turned off. This mode can be use to get user input without changing the product price","Single-line Formula- it is a simple single-line math expression without any logical conditions","Conditional Expression- if the condition if is met, calculate the price according to the assigned formula in = field. You can use multiple conditions. The else formula is used when none of the conditions are met.","Price Add-ons- if the condition if is met, the product price is increased by add value. You can use multiple conditions with all available functions and operators. Both if and add field accepts math and logical expression with variables.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Expression Syntax"},{"l":"Field names"},{"l":"Arithmetic operators"},{"l":"Comparision Operators"},{"l":"Logical Operators"},{"l":"Math Functions","p":["Use semicolon ; to separate arguments in functions","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Formula Examples","p":["In this section, we cover examples of how to use mathematical formulas and expressions. Some of the examples are based on questions asked by users."]},{"i":"1-how-to-add-value-to-a-price-so-that-it-is-not-multiplied-by-quantity","l":"1. How to add value to a price so that it is not multiplied by quantity?","p":["By default, the unit price of the product is calculated. If the customer wants to buy, for example, 2 pieces of a product, the calculated price is multiplied by 2. What to do if we want to add a certain value once, regardless of the quantity purchased. The solution is to divide value by {quantity}. Let's see the example. {field_1} will by multiplied by quantity, but {field_2} is added once."]},{"i":"2-how-to-add-price-for-every-character-in-text-field-","l":"2. How to add price for every character in text field ?","p":["Let's say we have a text field that has to be between 1 and 10 characters long. The price of the product is to change depending on the number of characters entered.","Solution #1 - price per character is constans","Solution #2 - price is different for each character","Next we have to build the formula. We have {global:price_per_char} array and we need to get single value by index. The index is strlen({my_field:text}) - 1, so complete formula looks like this:","Solution #3 - use Price Add-on mode and write multiple if and add expressions. For example:"]},{"i":"3-each-product-has-width-and-height-user-gives-only-one-dimension-and-the-price-is-proportional-to-the-calculated-area","l":"3. Each product has width and height. User gives only one dimension and the price is proportional to the calculated area.","p":["User has to input width, but the height will be calculated with proportions from product dimensions.","First of all, set the product width and height in the product options, so we will be using {product_width} and {product_height} variables. Video: How to use product dimensions. Create number field and name it width. The height will be calculated as proportional to the product dimensions. Look at this equations:","If the price per unit equals 99,00 USD, the result formula will be:","The same formula with \"height\" field instead of \"width\""]},{"i":"4-how-to-decrease-product-price-for-logged-user-by--1000-usd-or-by--5-","l":"4. How to decrease product price for logged user by -10,00 USD or by -5 %","p":["We have built-in variable {is_user_logged} which takes values 1 or 0. So the result formula will be:","or","You must be careful when decreasing prices, because it may be 0 or negative. To protect this, use max() function."]},{"i":"5-how-to-use-multicheckbox-and-conditional-number-fields-","l":"5. How to use multicheckbox and conditional number fields ?","p":["In this example we define multicheckbox field named {multi_cb} and three number fields {num_a}, {num_b}, {num_c}.","Multicheckbox {multi_cb} has three options:","value: 1, option title: Option A","value: 2, option title: Option B","value: 3, option title: Option C","Each of number fields {num_a}, {num_b}, {num_c} are visible for one of three {multi_cb} options. So, we need to define visibility rules. For example field {num_a} has rule {multi_cb} == 1, which means that this field will be visible if user checked \"Option A\".","Next, we need to go to \"Price Add-ons\" to set formulas. To check if user has selected certain option we use is_selected() function. This is example how to calculate price based on selected option and number field value:","if is_selected( {multi_cb}; 1 ) add {num_a} * 100","if is_selected( {multi_cb}; 2 ) add {num_b} * 250","if is_selected( {multi_cb}; 3 ) add {num_c} * 500"]}],[{"l":"Usage","p":["Here we explain how to work with the plugin. Please read carefully whole page. Feel free to contact us if something is not clear.","WCK YouTube tutorials","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site."]},{"l":"Adding new Fieldset","p":["Navigate to Products > WCK Fieldsets in Wordpress dashboard.","Click Add Fieldset to create new one. The empty form looks like below:","Fieldset Title is used only in Wordpress dashboard","Assign to- you can assign this fieldset to products, categories or tags. If product has more than one fieldset, you can set priority.","Higher value have higher priority","Product Fields Settings- here you set options for each field.","Add Field- click on the button to add the field of selected type.","Price Calculation- here you define the formula/expression to calculate the product price. You can choose single-line or conditional mode.","Price Filtering- this option changes product prices in catalog. For example you can set the product price to: from 99,99 USD/m2"]},{"l":"Defining fields","p":["Fields can be added, deleted and reordered (drag&drop). Parameters of each field are described in the Field Types section.","If you appreciate my work - Buy me a Coffee or Donate via PayPal","All settings are validated when saving. Fieldset cannot be saved in case of errors.","Select and Dropdown field has ability to add, delete, import options. You can choose the default option for the field.","The example below shows the Select field with two options with a default option. In this case the first option is default."]},{"l":"Defining expressions","p":["You are responsible for preparing the correct formula, mathematically and logically correct. Be careful and always test expressions. The result (the price) has to be a positive number greater than zero. It is validated during the calculation process.","The Expression can be defined as single-line or conditional. You can use Number and Select fields as variables in the formula. You can also use other fields in the expression and predefined variables {product_price}, {product_regular_price}, {quantity}","Some other fields has a price option. For example the text field {my_text} has price 50,00 USD and is not required. If the customer fill in this field the price of the field will be 50,00. But if the customer leaves this field empty the price will be 0,00. It is important if you take {my_text} in your expression.","The \"=\" (equals sign) is the calculated product price. The plugin checks the conditions one by one. If the condition is true, it returns the value of the assigned formula.","First option - single-line expression:","Second option - conditional expression:","Expression builder has simple autocompletion feature. Please click Update list to add fields to autocompletion. When you type the formula, enter \"{\" sign and you see the list of available fields."]},{"l":"Example of conditional expression","p":["First, we have to define two Number or Select fields named width and height. The price of the product can be 100 USD, 200 USD or (300+area* 0.05) USD.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Advanced Usage"},{"i":"how-to-get-input-text-length-character-count-","l":"How to get input text length (character count) ?","p":["Add text field with name field_name.","You can get input text using {field_name:text}. There's strlen() function which returns text length, so strlen({field_name:text}) returns input characters count."]},{"i":"how-to-use-multi-checkbox-field-","l":"How to use Multi Checkbox field ?","p":["Let's add multi checkbox field named field_mcb. You can use in expression:","{field_mcb:sum}- sum of selected values","{field_mcb:min}- minimal selected value","{field_mcb:max}- maximal selected value"]},{"i":"how-to-use-range-date-picker-field-","l":"How to use Range Date Picker field ?","p":["Range date picker has two input fields - \"from\" and \"to\" dates. Let's add a new field named rdp","{rdp:date_from}- date \"from\" as unix timestamp","{rdp:date_to}- date \"to\" as unix timestamp","{rdp:days}- number of days between two dates (absolute integer)"]},{"i":"how-deal-with-upload-field-","l":"How deal with Upload field ?","p":["Add Upload/Image Upload field named file","{file}- returns field price defined in the \"Price\" option","{file:size}- returns input file size in MB"]},{"i":"products-variables","l":"Product's variables","p":["Expression builder comes with several built-in variables to use in expressions. The value of that parameters is according to the current product and may be different for each product.","{product_price}- current product price (sale or regular)","{product_regular_price}- current product regular price","{product_weight}- current product weight from Product Data > Shipping","{product_width}- current product width from Product Data > Shipping","{product_height}- current product height from Product Data > Shipping","{product_length}- current product length from Product Data > Shipping","{is_user_logged}- 1 if current visitor is logged in, 0 otherwise","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Templates","p":["WC Kalkulator v1.1.0 brings a new approach to modifying the appearance of fields. Every file in view directory can be overriden. Just copy file from the view directory to the themes/your-theme/wc-kalkulator directory and make your modifications.","For example: view/fields/front/text.php should be copied to the /themes/your-theme/wc-kalkulator/fields/front/text.php"]},{"l":"Structure of the view directory","p":["Files","Description","views/fields/front/*.php","Template files for every field rendered on the produt page","views/woocommerce/catalog_price.php","Template for the price filter - prefix, price, suffix.","views/woocommerce/price_block.php","Template for the \"Total\" in the product page","views/woocommerce/product.php","Container for the fields on the product page"]},{"l":"Filters and Hooks","p":["Example filter to change td class=label tag in field template","Example filter to change td class=value tag in field template"]},{"l":"Layouts","p":["Layouts has beed added in v 1.4.0. You can choose default one column layout or switch to two column layout. In this video I show how to use layouts feature.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"i":"stock-management--inventory","l":"Stock Management / Inventory","p":["WC Kalkulator v 1.4.0 brings support for stock management and stock quantity reduction. This feature is available for single and variable products. The idea is to reduce a stock quantity by custom value, which is Quantity x Multiplier.","Multiplier is what you can set in Fieldset's Settings. This value can be a numer or math formula. You can use all available fields, operators and functions.","Product must have stock management enabled in product option"]},{"l":"Video Tutorial","p":["In this video I show how to reduce stock quantity by field's value. Stock quantity is reduced by 90 pieces, because field value is 45 and quantity is 2."]}],[{"i":"importexport-fieldsets","l":"Import/Export fieldsets","p":["WC Kalkulator is built on the new Post Type, which is full compatible with core import/export functionality in Wordpress. Navigate to Tools Export to export Fieldset post type to XML file. Use Tools Import to import that file.","You can also use any importer/exporter plugin in Wordpress.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Uninstallation","p":["The plugin may be deactivated without losing any of its data.","When the plugin is deactivated, it is possible to uninstall it. During the uninstallation process, all data will be deleted from the Wordpress database.","If you want to save all data for later, please export to the XML file.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Video Tutorials","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"1. Basic Usage"},{"i":"2-how-to-work-with-fieldsets-priority-","l":"2. How to work with fieldset's priority ?"},{"i":"3-how-to-use-date-pickers-","l":"3. How to use Date Pickers ?"},{"i":"4-what-is-global-parameter-and-how-to-use-it-","l":"4. What is Global Parameter and how to use it ?"},{"i":"5-how-to-use-text-input-and-count-text-length-","l":"5. How to use text input and count text length ?"},{"i":"6-how-to-set-custom-field-template-template-overriding-","l":"6. How to set custom field template (template overriding) ?"},{"i":"7-how-to-use-product-dimensions-and-weight-in-formula-","l":"7. How to use product dimensions and weight in formula ?"},{"i":"8-how-to-set-different-price-for-loggedunlogged-users-","l":"8. How to set different price for logged/unlogged users ?"},{"i":"9-how-to-use-arrays-and-json-objects-in-global-parameters-","l":"9. How to use arrays and json objects in Global Parameters ?"},{"i":"10-stock-management-reduction-multiplier","l":"10. Stock Management (Reduction Multiplier)"},{"i":"11-layouts-two-column-layout","l":"11. Layouts, two-column layout"}],[{"l":"CHANGELOG","p":["2022-01-20 v.1.0.0","2022-02-18 v.1.1.0","2022-04-20 v.1.1.1","2022-05-08 v.1.1.2","2022-06-13 v.1.2.0","2022-06-13 v.1.2.1","2022-06-14 v.1.2.2","2022-06-15 v.1.2.3","2022-07-04 v.1.3.0","2022-07-06 v.1.3.1","2022-07-07 v.1.3.2","2022-07-11 v 1.3.3","2022-07-21 v.1.4.0","2022-07-22 v.1.4.1, 1.4.2","2022-07-22 v.1.4.3","add notices","added a price option to all fields","Added new fields: email, radio","added support for array and json objects in global parameters","added the priority option to fieldsets","Additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","apply filters on td elements in field's templates","Assign fieldset to product's tags","assign the fieldset to products/categories on the fieldset's edit page","Bug fix","Bug fixed: missing numberposts argument on get_posts()","Bug fixed: str_replace on array","bug fixes","conditional visibility (set rules to show/hide fields)","cron jobs to keep uploaded files clean","Customer can edit cart item","field's template can be overrided in your theme folder","fieldset post type","fixed field builder (js script issue)","fixed issue with price calculation","fixed typo in HTML code for dropdown and select fields","Global parameters can be defined and used in formula","Image upload field added – you can use file size parameter in expressions","Initial release","layouts feature - you can choose one or two column layout","Math functions to use in the expression","more columns on fieldset table","new assignment type: product attribute","new calculation mode - Price Add-ons","new edit page","New fields: image select, image swatches, color swatches, checkbox group (multicheckbox), HTML, Heading, Paragraph, Hidden, Link, Attachment","new formula builder","new variable to determine if current visitor is logged in","new variables to get product's weight, width, height, length","performance fixes","Settings page added – you can define custom product form selector, you can toggle error messages for admin/manager","strlen() function added to expressions – it returns text length","support for stock management and stock reduction multiplier","text field has new option: pattern (regexp)","toggle button to publish/unpublish fieldsets quickly","upload path settings","you can use formulas in HTML/Paragraph field, for example: {=*/100}"]}]] \ No newline at end of file +[[{"l":"WC Kalkulator"},{"l":"Custom Fields and Price Calculator for WooCommerce","p":["WC Kalkulator (WCK) is a WordPress plugin which extends the WooCommerce to use custom extra fields with products and orders. Extra product fields can be used to calculate product price and save information in order details.","Absolutely FREE plugin with PRO features","23 field types to get customer input","Price calculation based on formula, conditional expression or price add-ons.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!","You can sell products by anything. You are not limited to sell only by length, area, volume, etc. You decide how the prices will be calculated."]},{"i":"what-makes-wc-kalkulator-unique-","l":"What makes WC Kalkulator unique ?","p":["When designing the functionality of the plugin, we wanted to obtain software that would be easy to use and highly configurable and suitable for any type of store.","The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields are not used in formulas, but you can use it to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"i":"22-field-types-all-free","l":"22 Field Types (ALL FREE)"},{"l":"Definitions","p":["Field- is used to get user's input on the woocommerce product page. Custom Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset (set of custom product fields) which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the woocommerce custom price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the woocommerce custom price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"i":"formulaexpression-builder","l":"Formula/Expression Builder","p":["Use field's values as variables to calculate product price. Drag&drop conditional statements."]},{"l":"Price Add-Ons","p":["Use custom fields to make Product Add-Ons. This feature is experimental and will be continued in the next releases."]},{"l":"Display Fields","p":["Assign fields to products, categories or product tags. Include/exclude options. Mass assignment."]},{"l":"Validation","p":["Each field has built-in validation tests on user input. You can define additional conditions."]},{"l":"Protected Formula","p":["The price is calculated server-side only, so the Client can't see exact expression."]},{"l":"Advanced Customization","p":["Field HTML templates can be overloaded in your theme file. Each field has CSS class to set custom styles."]},{"l":"Functions","p":["You can use basic math functions in the formula. Fields such as Multi-checkbox, Date Picker, Date Range Picker has additional functions to get sum, min, max value or get date, days between dates values as number."]},{"l":"Global Parameters","p":["You can define numeric variable across all fieldsets. You can modify all prices by global parameters."]},{"l":"Cart","p":["The customer can edit product options after adding to cart."]},{"l":"Integration with ACF","p":["You can use acf('field_name') function to get ACF field value in custom price formula."]},{"l":"Compatibility","p":["multisite mode is supported","product shortcodes","translation","virtual and variable products are supported","product regular and sale prices are supported","product tags and attributes","use product attributes in formulas","ACF supported"]},{"l":"More Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HMTL template of every field can be overridden in a theme directory","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"News","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"i":"version-140-has-been-released","l":"Version 1.4.0 has been released","p":["Update: 2022-07-18","[x] new formula builder[x] apply filters on td elements in field's templates[x] new assignment type: product attribute[x] toggle button to publish/unpublish fieldsets quickly[x] support for stock management and stock reduction multiplier[x] layouts feature - you can choose one or two column layout"]},{"i":"version-130-has-been-released","l":"Version 1.3.0 has been released","p":["Update: 2022-07-04","Price Add-ons","Image upload field","Use dynamic formula in a static field's contents","Settings page","Strlen() function to get a text length"]},{"i":"version-120-has-been-released","l":"Version 1.2.0 has been released","p":["Update: 2022-06-13","many new fields","static fields","field's built-in modifiers","global parameters","functions in expressions","customer can edit product in the cart"]},{"i":"what-we-are-working-on","l":"What we are working on?","p":["a new field: file upload,","add a price parameter to all fields and use the value in the formula,","add global fields, so the product could have a one fieldset with calculations and global fields.","add priority for fieldsets","allow editing fields in the user's cart,","apply fieldsets to categories,","Apply for a new feature by clicking the link at the top.","assign to all products/categories, except ...","customizable field's template","mass assignment of fieldsets to products,","some bug fixes reported by users","stock management for numeric fields,","Update: 2022-01-21","Update: 2022-02-18","We are working on new features:","We released new version 1.1.0 which gives more flexibility and performance. We have also added new features, blow:"]}],[{"l":"About the Plugin","p":["The plugin extends the Woocommerce store with the ability to add your own fields to the product page. Almost all fields are used in formulas to calculate a custom price for a product. The plugin allows full freedom to define fields and formulas for calculating the price. Some of fields can be used to get informations from Customer (for example: text, date, date range, color, dropdown, etc.)","The plugin is designed to work with multisite mode. We encourage you to contact us and request new features.","If you appreciate my work - Buy me a Coffee or Donate via PayPal"]},{"l":"Definitions","p":["Field- is used to get user's input on the product page. Field can be used to calculate the price (is used in formula)","Fieldset- store manager can create the fieldset which consists of different Fields. Fieldset must have at least one Field and the expression (formula) to calculate the product price","Expression/Formula- mathematical and/or logical expression using to calculate the product price. The expression can be single-line (one-line) or conditional. Expression is protected and calculated only server-side.","Validation- each Field has specific requirements to be met. Incorrect values make it impossible to calculate the price and add the product to the cart.","Global Parameters- are numeric variables which can be used in formulas across all fieldsets."]},{"l":"Requirements","p":["Minimum tested version, but not recommended","Wordpress v.5.0","Woocommerce v.3.5","Maximum tested version","Wordpress v.6.0","Woocommerce v.6.7","Recommended version","We strongly recommend to use most recent versions of Wordpress and Woocommerce. There is no restriction to PHP version, but please note that PHP below 7.4 is marked as end-of-life. We recommend using PHP7.4 and above. PHP7.4 is supported in Wordpress v5.3 and above.","Supported PHP versions PHP compatibility and Wordpress versions"]},{"l":"Dependencies","p":["Symfony ExpressionLanguage Component","jQuery, jQuery UI (built in Wordpress Core)","Math Expression Evaluator by bugwheels94"]},{"l":"Features","p":["ability to edit product fields after from a cart","additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","attach fieldset to: all products/catgories/tags, selected products/categories/tags","customizable HTML code of every field","define single-line expression to calculate the price","define unlimited conditional expressions to calculate the price","define unlimited fieldsets with unlimited fields","dynamic formula in a static field's contents","every field has built-in validation tests","expression builder","fields are displayed in product page, cart and order details,","global parameters can be defined and used in formula","HTML template of every field can be overridden in a theme directory","image upload field (use file size in formula/expression)","math functions to use in the expression","product shortcodes are supported","regular and sale price are supported","static fields such as HTML, Heading, Paragraph, Hidden, Link, Attachment","supported multisite","supported price filters","supported variable products","the formula is protected and will not be shown to the user- the price is calculated only server-side","the plugin is translatable","the product will be removed from user's cart when shop manager updates the fieldset settings","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"Conflict with other plugins","p":["This plugin has been tested only with Wordpress and Woocommerce without additional plugins. Note that there may be a conflict with plugins that modifies the product price and user's cart, or has similar functionality. This section will be updated and conflicts will be resolved.","We know about issue with displaying prices in a cart page. In some themes there's an issue with cart page. Theme should display cart item price instead of product price. The plugin modifies cart items, but not products itself."]}],[{"l":"Installation","p":["Installation process is the same as for other plugins. The plugin does not require configuration, it is ready to use. The plugin creates new post type - Fieldset.","The plugin adds new menu in Products> WCK Fieldsets.","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Field Types","p":["The plugin comes with several built-in fields to be used on the product page. Please contact us if you need to add new field types. We are working on the ability to build custom fields as extensions for the plugin. We would like to meet your expectations as much as possible.","Each field has its own parameters, but some parameters are the same for every field. See the list below:","Parameter","Description","Name","Unique field name used in plugin code. It must consist of A-Z, a-z or underscore. For example: product_width, table_height, etc.","Title","Field name showed to the User. For example: Product width, Table height","Hint for Customer","Help message showed in tooltip. For example: Please choose product color from the list.","CSS Class","CSS class applied to the HTML code of the field. You can define additional styles in custom .css files in theme.","Price","If the field is filled in by the customer, the price will be used in the formula. Otherwise the price is 0. This parameter is not present for the: number field and select field.","See Templates section to know how to modify HTML code of any field."]},{"l":"Number","p":["Number Field is the basic field to use in the plugin. It is standard single-line input field, which takes a numeric value and can be used in a formula/expression.","This field is required by default.","Parameter","Description","Min. value","The minimum value of the field","Max. value","The maximum value of the field","Default value","Initial value of the field. This value is loaded into field when user opens the product page."]},{"l":"Select","p":["Select Field is a standard dropdown field. You must define numeric value of options, because this field is used in the formula/expression.","This field is required by default."]},{"l":"Checkbox","p":["Parameter","Description","Default state","Default state of checkbox. Select this option if you want the field to be checked by default"]},{"l":"Color Picker","p":["Color Picker is a standard input text field with jQuery wpColorPicker and IRIS. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required"]},{"l":"Date Picker","p":["Date Picker is a standard input text field with jQuery UI Datepicker. JS files are bundled in the Wordpress Core.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Range Date Picker","p":["Range Date Picker includes two Date Picker fields connected with each other.","Parameter","Description","Required","Select this option to make the field required.","Disallow past date","Select this option to prohibit the user from selecting a date earlier than today."]},{"l":"Dropdown","p":["Dropdown field is almost the same as Select field. This field accepts text values.","Parameter","Description","Required","Select this option to make the field required."]},{"l":"Text","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Textarea","p":["Note that defining Min. length greater than zero makes the field required. Even if you have not checked Required option.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"E-mail","p":["E-mail field is used to get e-mail address from the Customer input. This field has an e-mail validation test.","Parameter","Description","Required","Select this option to make the field required.","Min. length","The minimum number of characters that the user can enter.","Max. length","The maximum number of characters that the user can enter.","Placeholder","Support text displayed inside the field. This is not the default value for the field. May be used as a guideline for the user."]},{"l":"Radio","p":["Radio field is used to display a group of radio buttons. It has similar funcationality to the Select field, so u can use option's values in the formula/expression.","This field is required by default."]},{"i":"checkbox-group-multi-checkbox","l":"Checkbox Group (Multi Checkbox)","p":["Checkbox Group is used to display a group of checkboxes. It is possible to define selection limit (i.e. customer can choose max 2 options). Multi Checkbox can be used in the expression, for example: is_selected({multi_cb}; 10) checks if user selected the option with value \"10\". You can also use built-in variables {multi_cb:min}(minimal selected value), {multi_cb:max}(maximal selected value), {multi_cb:sum}(sum of selected values)"]},{"l":"Color Swatches","p":["Color Swatches are shown as square thumbnails, which may be selected by a customer. Each options has a numeric value to use in a formula."]},{"l":"Image Swatches","p":["Image Swatches works like Color Swatches, but you can define images instead of colors."]},{"l":"Image Select","p":["Image Select works similar to Image Swatches, but you can define Caption/Title for each image option."]},{"i":"static-html","l":"Static: HTML","p":["Displays content from a HTML code. It is filtered by wp_kses_post. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-attachment","l":"Static: Attachment","p":["You can add file/media attachment, to be downloaded by the Customer on product page."]},{"i":"static-heading","l":"Static: Heading","p":["You can add heading h1-h6 in product page"]},{"i":"static-paragraph","l":"Static: Paragraph","p":["You can add text in paragraph tag in product page. You can use dynamic expression in the contents, for example: {={field_1}*{field_2}/1000}"]},{"i":"static-hidden","l":"Static: Hidden","p":["You can add hidden input fields to store predefined values. This field does not accept user input."]},{"i":"static-link","l":"Static: Link","p":["You can add link to any website, file attachment, URL."]},{"l":"Image upload","p":["You can get image file from the customer. Files are saved in customer directory on checkout. Go to Settings Page to set cron jobs invervals. Files are uploaded to the temp directory and will be deleted after time. Files will be kept longer if the customer places an order. Customer files will be deleted after 360 days (default option), but you can set your own interval.","You can use file size [MB] parameter in formulas."]},{"i":"special-formula-value","l":"Special: Formula Value","p":["This field is not showed on the product page. You can write your own formula and save the value in order item meta data. Value of the field may be displayed on user's cart. Hint: you can use {total_price} in your formula to get total product price calculated by WCK plugin.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Calculation Modes","p":["The Plugin comes with several calculation modes. You can choose one of mentioned below:","OFF- price calculation is turned off. This mode can be use to get user input without changing the product price","Single-line Formula- it is a simple single-line math expression without any logical conditions","Conditional Expression- if the condition if is met, calculate the price according to the assigned formula in = field. You can use multiple conditions. The else formula is used when none of the conditions are met.","Price Add-ons- if the condition if is met, the product price is increased by add value. You can use multiple conditions with all available functions and operators. Both if and add field accepts math and logical expression with variables.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Expression Syntax"},{"l":"Field names"},{"l":"Arithmetic operators"},{"l":"Comparision Operators"},{"l":"Logical Operators"},{"l":"Math Functions","p":["Use semicolon ; to separate arguments in functions","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Formula Examples","p":["In this section, we cover examples of how to use mathematical formulas and expressions. Some of the examples are based on questions asked by users."]},{"i":"1-how-to-add-value-to-a-price-so-that-it-is-not-multiplied-by-quantity","l":"1. How to add value to a price so that it is not multiplied by quantity?","p":["By default, the unit price of the product is calculated. If the customer wants to buy, for example, 2 pieces of a product, the calculated price is multiplied by 2. What to do if we want to add a certain value once, regardless of the quantity purchased. The solution is to divide value by {quantity}. Let's see the example. {field_1} will by multiplied by quantity, but {field_2} is added once."]},{"i":"2-how-to-add-price-for-every-character-in-text-field-","l":"2. How to add price for every character in text field ?","p":["Let's say we have a text field that has to be between 1 and 10 characters long. The price of the product is to change depending on the number of characters entered.","Solution #1 - price per character is constans","Solution #2 - price is different for each character","Next we have to build the formula. We have {global:price_per_char} array and we need to get single value by index. The index is strlen({my_field:text}) - 1, so complete formula looks like this:","Solution #3 - use Price Add-on mode and write multiple if and add expressions. For example:"]},{"i":"3-each-product-has-width-and-height-user-gives-only-one-dimension-and-the-price-is-proportional-to-the-calculated-area","l":"3. Each product has width and height. User gives only one dimension and the price is proportional to the calculated area.","p":["User has to input width, but the height will be calculated with proportions from product dimensions.","First of all, set the product width and height in the product options, so we will be using {product_width} and {product_height} variables. Video: How to use product dimensions. Create number field and name it width. The height will be calculated as proportional to the product dimensions. Look at this equations:","If the price per unit equals 99,00 USD, the result formula will be:","The same formula with \"height\" field instead of \"width\""]},{"i":"4-how-to-decrease-product-price-for-logged-user-by--1000-usd-or-by--5-","l":"4. How to decrease product price for logged user by -10,00 USD or by -5 %","p":["We have built-in variable {is_user_logged} which takes values 1 or 0. So the result formula will be:","or","You must be careful when decreasing prices, because it may be 0 or negative. To protect this, use max() function."]},{"i":"5-how-to-use-multicheckbox-and-conditional-number-fields-","l":"5. How to use multicheckbox and conditional number fields ?","p":["In this example we define multicheckbox field named {multi_cb} and three number fields {num_a}, {num_b}, {num_c}.","Multicheckbox {multi_cb} has three options:","value: 1, option title: Option A","value: 2, option title: Option B","value: 3, option title: Option C","Each of number fields {num_a}, {num_b}, {num_c} are visible for one of three {multi_cb} options. So, we need to define visibility rules. For example field {num_a} has rule {multi_cb} == 1, which means that this field will be visible if user checked \"Option A\".","Next, we need to go to \"Price Add-ons\" to set formulas. To check if user has selected certain option we use is_selected() function. This is example how to calculate price based on selected option and number field value:","if is_selected( {multi_cb}; 1 ) add {num_a} * 100","if is_selected( {multi_cb}; 2 ) add {num_b} * 250","if is_selected( {multi_cb}; 3 ) add {num_c} * 500"]}],[{"l":"Usage","p":["Here we explain how to work with the plugin. Please read carefully whole page. Feel free to contact us if something is not clear.","WCK YouTube tutorials","Plugin supports Wordpress Multisite feature. Fieldsets are separate for each site."]},{"l":"Adding new Fieldset","p":["Navigate to Products > WCK Fieldsets in Wordpress dashboard.","Click Add Fieldset to create new one. The empty form looks like below:","Fieldset Title is used only in Wordpress dashboard","Assign to- you can assign this fieldset to products, categories or tags. If product has more than one fieldset, you can set priority.","Higher value have higher priority","Product Fields Settings- here you set options for each field.","Add Field- click on the button to add the field of selected type.","Price Calculation- here you define the formula/expression to calculate the product price. You can choose single-line or conditional mode.","Price Filtering- this option changes product prices in catalog. For example you can set the product price to: from 99,99 USD/m2"]},{"l":"Defining fields","p":["Fields can be added, deleted and reordered (drag&drop). Parameters of each field are described in the Field Types section.","If you appreciate my work - Buy me a Coffee or Donate via PayPal","All settings are validated when saving. Fieldset cannot be saved in case of errors.","Select and Dropdown field has ability to add, delete, import options. You can choose the default option for the field.","The example below shows the Select field with two options with a default option. In this case the first option is default."]},{"l":"Defining expressions","p":["You are responsible for preparing the correct formula, mathematically and logically correct. Be careful and always test expressions. The result (the price) has to be a positive number greater than zero. It is validated during the calculation process.","The Expression can be defined as single-line or conditional. You can use Number and Select fields as variables in the formula. You can also use other fields in the expression and predefined variables {product_price}, {product_regular_price}, {quantity}","Some other fields has a price option. For example the text field {my_text} has price 50,00 USD and is not required. If the customer fill in this field the price of the field will be 50,00. But if the customer leaves this field empty the price will be 0,00. It is important if you take {my_text} in your expression.","The \"=\" (equals sign) is the calculated product price. The plugin checks the conditions one by one. If the condition is true, it returns the value of the assigned formula.","First option - single-line expression:","Second option - conditional expression:","Expression builder has simple autocompletion feature. Please click Update list to add fields to autocompletion. When you type the formula, enter \"{\" sign and you see the list of available fields."]},{"l":"Example of conditional expression","p":["First, we have to define two Number or Select fields named width and height. The price of the product can be 100 USD, 200 USD or (300+area* 0.05) USD.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Advanced Usage"},{"i":"how-to-get-input-text-length-character-count-","l":"How to get input text length (character count) ?","p":["Add text field with name field_name.","You can get input text using {field_name:text}. There's strlen() function which returns text length, so strlen({field_name:text}) returns input characters count."]},{"i":"how-to-use-multi-checkbox-field-","l":"How to use Multi Checkbox field ?","p":["Let's add multi checkbox field named field_mcb. You can use in expression:","{field_mcb:sum}- sum of selected values","{field_mcb:min}- minimal selected value","{field_mcb:max}- maximal selected value"]},{"i":"how-to-use-range-date-picker-field-","l":"How to use Range Date Picker field ?","p":["Range date picker has two input fields - \"from\" and \"to\" dates. Let's add a new field named rdp","{rdp:date_from}- date \"from\" as unix timestamp","{rdp:date_to}- date \"to\" as unix timestamp","{rdp:days}- number of days between two dates (absolute integer)"]},{"i":"how-deal-with-upload-field-","l":"How deal with Upload field ?","p":["Add Upload/Image Upload field named file","{file}- returns field price defined in the \"Price\" option","{file:size}- returns input file size in MB"]},{"i":"products-variables","l":"Product's variables","p":["Expression builder comes with several built-in variables to use in expressions. The value of that parameters is according to the current product and may be different for each product.","{product_price}- current product price (sale or regular)","{product_regular_price}- current product regular price","{product_weight}- current product weight from Product Data > Shipping","{product_width}- current product width from Product Data > Shipping","{product_height}- current product height from Product Data > Shipping","{product_length}- current product length from Product Data > Shipping","{is_user_logged}- 1 if current visitor is logged in, 0 otherwise","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Templates","p":["WC Kalkulator v1.1.0 brings a new approach to modifying the appearance of fields. Every file in view directory can be overriden. Just copy file from the view directory to the themes/your-theme/wc-kalkulator directory and make your modifications.","For example: view/fields/front/text.php should be copied to the /themes/your-theme/wc-kalkulator/fields/front/text.php"]},{"l":"Structure of the view directory","p":["Files","Description","views/fields/front/*.php","Template files for every field rendered on the produt page","views/woocommerce/catalog_price.php","Template for the price filter - prefix, price, suffix.","views/woocommerce/price_block.php","Template for the \"Total\" in the product page","views/woocommerce/product.php","Container for the fields on the product page"]},{"l":"Filters and Hooks","p":["Example filter to change td class=label tag in field template","Example filter to change td class=value tag in field template"]},{"l":"Layouts","p":["Layouts has beed added in v 1.4.0. You can choose default one column layout or switch to two column layout. In this video I show how to use layouts feature.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Use ACF in formulas","p":["WC Kalkulator 1.5.0 adds support for ACF plugin. You can use ACF fields values in formulas.","Step 1 - Add field in ACF","Step 2 - Use ACF field value in formula"]},{"l":"Usage","p":["Use acf('field_name') to get custom field value of the Product or Fieldset Post Type. If you need to get field value of differend Post Type, use Post ID as second parameter.","If you want to get ACF field value of different Post, just type in Post ID as a second parameter.","For example: use acf('field_name'; 239) to get ACF field value of Post with ID = 239.","Note that arguments are separated by ;","This function returns float value of the field. The acf(name; post_id) is translated to PHP code floatval( get_field( $name, $post_id ) ); where get_field() is function from the ACF Plugin."]}],[{"i":"stock-management--inventory","l":"Stock Management / Inventory","p":["WC Kalkulator v 1.4.0 brings support for stock management and stock quantity reduction. This feature is available for single and variable products. The idea is to reduce a stock quantity by custom value, which is Quantity x Multiplier.","Multiplier is what you can set in Fieldset's Settings. This value can be a numer or math formula. You can use all available fields, operators and functions.","Product must have stock management enabled in product option"]},{"l":"Video Tutorial","p":["In this video I show how to reduce stock quantity by field's value. Stock quantity is reduced by 90 pieces, because field value is 45 and quantity is 2."]}],[{"i":"importexport-fieldsets","l":"Import/Export fieldsets","p":["WC Kalkulator is built on the new Post Type, which is full compatible with core import/export functionality in Wordpress. Navigate to Tools Export to export Fieldset post type to XML file. Use Tools Import to import that file.","You can also use any importer/exporter plugin in Wordpress.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Uninstallation","p":["The plugin may be deactivated without losing any of its data.","When the plugin is deactivated, it is possible to uninstall it. During the uninstallation process, all data will be deleted from the Wordpress database.","If you want to save all data for later, please export to the XML file.","This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]}],[{"l":"Video Tutorials","p":["This plugin is absolutely FREE with PRO features. It will always be free, so please donate if you like it!"]},{"l":"1. Basic Usage"},{"i":"2-how-to-work-with-fieldsets-priority-","l":"2. How to work with fieldset's priority ?"},{"i":"3-how-to-use-date-pickers-","l":"3. How to use Date Pickers ?"},{"i":"4-what-is-global-parameter-and-how-to-use-it-","l":"4. What is Global Parameter and how to use it ?"},{"i":"5-how-to-use-text-input-and-count-text-length-","l":"5. How to use text input and count text length ?"},{"i":"6-how-to-set-custom-field-template-template-overriding-","l":"6. How to set custom field template (template overriding) ?"},{"i":"7-how-to-use-product-dimensions-and-weight-in-formula-","l":"7. How to use product dimensions and weight in formula ?"},{"i":"8-how-to-set-different-price-for-loggedunlogged-users-","l":"8. How to set different price for logged/unlogged users ?"},{"i":"9-how-to-use-arrays-and-json-objects-in-global-parameters-","l":"9. How to use arrays and json objects in Global Parameters ?"},{"i":"10-stock-management-reduction-multiplier","l":"10. Stock Management (Reduction Multiplier)"},{"i":"11-layouts-two-column-layout","l":"11. Layouts, two-column layout"}],[{"l":"CHANGELOG","p":["2022-01-20 v.1.0.0","2022-02-18 v.1.1.0","2022-04-20 v.1.1.1","2022-05-08 v.1.1.2","2022-06-13 v.1.2.0","2022-06-13 v.1.2.1","2022-06-14 v.1.2.2","2022-06-15 v.1.2.3","2022-07-04 v.1.3.0","2022-07-06 v.1.3.1","2022-07-07 v.1.3.2","2022-07-11 v 1.3.3","2022-07-21 v.1.4.0","2022-07-22 v.1.4.1, 1.4.2","2022-07-22 v.1.4.3","2022-07-23 v.1.4.4","2022-07-23 v.1.4.5","2022-07-23 v.1.4.6","2022-08-05 v.1.5.0","add notices","added a price option to all fields","added is_selected() function","Added new fields: email, radio","added support for array and json objects in global parameters","added the priority option to fieldsets","Additional functions for radio group, checkbox group (sum, max, min), range date picker (days between dated)","apply filters on td elements in field's templates","Assign fieldset to product's tags","assign the fieldset to products/categories on the fieldset's edit page","Bug fix","Bug fixed: missing numberposts argument on get_posts()","Bug fixed: str_replace on array","bug fixes","bug fixes in multi checkbox","conditional visibility (set rules to show/hide fields)","conditional visibility support for multi checkbox","cron jobs to keep uploaded files clean","Customer can edit cart item","field's template can be overrided in your theme folder","fieldset post type","fieldset's options (toggle default price blocks)","fixed field builder (js script issue)","fixed issue with price calculation","fixed typo in HTML code for dropdown and select fields","Global parameters can be defined and used in formula","Image upload field added – you can use file size parameter in expressions","Initial release","layouts feature - you can choose one or two column layout","Math functions to use in the expression","more columns on fieldset table","new assignment type: product attribute","new calculation mode - Price Add-ons","new edit page","new field: formula value","New fields: image select, image swatches, color swatches, checkbox group (multicheckbox), HTML, Heading, Paragraph, Hidden, Link, Attachment","new formula builder","new variable to determine if current visitor is logged in","new variables to get product's weight, width, height, length","performance fixes","Settings page added – you can define custom product form selector, you can toggle error messages for admin/manager","strlen() function added to expressions – it returns text length","support for stock management and stock reduction multiplier","text field has new option: pattern (regexp)","toggle button to publish/unpublish fieldsets quickly","upload path settings","you can use formulas in HTML/Paragraph field, for example: {=*/100}"]}]] \ No newline at end of file diff --git a/docs/.retype/sitemap.xml.gz b/docs/.retype/sitemap.xml.gz index 104aba56d6e9c3ef10ad53ebcd203360c104e3fc..08dbefdd0630cbe185aee3da7ab822fa7712171a 100644 GIT binary patch delta 496 zcmVrK50P_rk3nTwg1a@Yc2TsPw12GbNorm#{$>f_?@Yc= zl36{bT=(Dz7W3-JjO}$(VTf@8iv*z>cf{GeLn&%Yl|IY!_;_yX~$%wIMYGM+wpL()hC`@VuDcpOL1JgYT2h}NK znRF)CV_r5$YJZF=ENKqCYquUO*HQkoAKU$zM=^4j+garpTYeaD zy8O&kE2M7yg7$kZVe+jsA4b4MD7SwLQn`To-}QqY?W>asw*BaaOxu00030{{sM4d9_)h3IG7N0`$uO delta 477 zcmV<30V4i@1nmQm8h?V7(Az!%z3ip(f=jF#8(|ZYx33{+SCw`hquSKbZU& zC9`@+Yu$kpn9ZvrGq%%Bi6O=bJS31*7*hl(I{b8gtM%dA4?+*Z-b?qXC-D1iJ{hb> zZ$(giGF}dJtT3c`PSO6~956i|z6mlKK6FftOak^xkJbx?N#!yF_mmVqs67b>C6uvD zI+N?M4TXaR&3~bnEf2@`F1T#`WyE=f4ipoLaxWDQM^!UfkB@{U_TFQ z58TY6k(j%(?6#%n2+cDuU`RgJ^^zxlIG@ybA#)i$ro`KA - + @@ -30,11 +30,11 @@ - + - + - +
    @@ -51,7 +51,7 @@
    +
    diff --git a/docs/.retype/usermanual/advanced_usage/index.html b/docs/.retype/usermanual/advanced_usage/index.html index 702ef9a..e96da90 100644 --- a/docs/.retype/usermanual/advanced_usage/index.html +++ b/docs/.retype/usermanual/advanced_usage/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    @@ -51,7 +51,7 @@
    +
    diff --git a/docs/.retype/usermanual/calculation-types/index.html b/docs/.retype/usermanual/calculation-types/index.html index 67bbbad..ec0d2c3 100644 --- a/docs/.retype/usermanual/calculation-types/index.html +++ b/docs/.retype/usermanual/calculation-types/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    @@ -51,7 +51,7 @@
    +
    diff --git a/docs/.retype/usermanual/example-expressions/index.html b/docs/.retype/usermanual/example-expressions/index.html index 5bbd28c..1938658 100644 --- a/docs/.retype/usermanual/example-expressions/index.html +++ b/docs/.retype/usermanual/example-expressions/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    @@ -51,7 +51,7 @@
    +
    diff --git a/docs/.retype/usermanual/expression-syntax/index.html b/docs/.retype/usermanual/expression-syntax/index.html index 45ec3b9..b69ed29 100644 --- a/docs/.retype/usermanual/expression-syntax/index.html +++ b/docs/.retype/usermanual/expression-syntax/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    @@ -51,7 +51,7 @@
    +
    diff --git a/docs/.retype/usermanual/fields/index.html b/docs/.retype/usermanual/fields/index.html index 4e8e404..7e9e288 100644 --- a/docs/.retype/usermanual/fields/index.html +++ b/docs/.retype/usermanual/fields/index.html @@ -3,7 +3,7 @@ - + @@ -30,12 +30,12 @@ - + - + - - + +
    @@ -52,7 +52,7 @@
    +
    @@ -813,6 +813,13 @@

    + +

    + # + Special: Formula Value +

    +
    +

    This field is not showed on the product page. You can write your own formula and save the value in order item meta data. Value of the field may be displayed on user's cart. Hint: you can use {total_price} in your formula to get total product price calculated by WCK plugin.