diff --git a/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-product.php b/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-product.php
index 532ebb3..7d6f708 100644
--- a/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-product.php
+++ b/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-product.php
@@ -4,12 +4,13 @@ class Wiaas_Admin_Product {
public static function init() {
- add_action('acf/save_post', array(__CLASS__, 'wiaas_my_save_post'), 20, 1);
+ add_action('acf/save_post', array(__CLASS__, 'save_initial_product_country_and_type'), 20, 1);
add_action('woocommerce_after_register_post_type', array(__CLASS__, 'wiaas_register_product_status'));
add_filter('woocommerce_register_post_type_product', array(__CLASS__, 'wiaas_modify_product'));
add_action('add_meta_boxes', array(__CLASS__, 'wiaas_maybe_remove_metaboxes'), 999);
add_filter('wp_insert_post_data', array(__CLASS__, 'wiaas_maybe_set_no_country_status'), 999, 2);
- add_action('acf/render_field/type=taxonomy', array(__CLASS__, 'wiaas_render_field'), 10, 1);
+
+ add_action('acf/render_field/type=group', array(__CLASS__, 'render_choose_button_for_new_product'), 10, 1);
}
@@ -28,13 +29,12 @@ class Wiaas_Admin_Product {
));
}
+ public static function render_choose_button_for_new_product($field) {
- public static function wiaas_render_field($field) {
-
- if ($field['_name'] === '_wiaas_product_country') {
+ if ($field['_name'] === '_wiaas_product_general') {
?>
-
-
+
+
ID;
- if ($post_id === 0 ||
- ($post->post_status !== 'publish' && !(Wiaas_Countries::get_package_country(wc_get_product($post_id))))) {
+ if ($post_id === 0 || $post->post_status === '_wiaas_no_country') {
remove_meta_box('woocommerce-product-data', 'product', 'normal');
remove_meta_box('submitdiv', 'product', 'side');
@@ -99,24 +98,54 @@ class Wiaas_Admin_Product {
* @param $post_id
*/
- public static function wiaas_my_save_post($post_id) {
+ public static function save_initial_product_country_and_type($post_id) {
global $post;
- $status = get_post_status( $post->ID);
- $value = get_field('_wiaas_product_country', $post_id, true);
- $type = get_field('_wiaas_product_type', $post_id, true);
+ if ($post->post_type !== 'product') {
+ return;
+ }
- if (!empty($value) && $status === '_wiaas_no_country' ) {
+ $general = get_field('_wiaas_product_general', $post_id);
- wp_set_object_terms($post_id, $value, 'product_country', true);
- wp_set_object_terms($post_id, $type, 'product_type', true);
+ $country = $general['_wiaas_product_country'];
+ $type = $general['_wiaas_product_type'];
+ /**
+ * If type is missing set status to no country
+ *
+ * If this is not template product type and country is missing set status to no country
+ *
+ */
+ if (empty($type) || ( empty($country) && $type !== 'wiaastemplate' )) {
+ wp_update_post(array(
+ 'ID' => $post_id,
+ 'post_status' => '_wiaas_no_country'
+ ));
+
+ return;
+ }
+
+ /**
+ * Country and type are selected for simple and bundle products so
+ * link them
+ */
+
+ wp_set_object_terms($post_id, $type, 'product_type', true);
+
+ if ($type !== 'wiaastemplate') {
+ wp_set_object_terms($post_id, $country, 'product_country', true);
+ }
+
+ /**
+ * If product had no country status change it to draft status
+ */
+
+ if ($post->post_status === '_wiaas_no_country') {
wp_update_post(array(
'ID' => $post_id,
'post_status' => 'draft'
));
-
}
}
diff --git a/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-general.json b/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-general.json
index c5ad7b7..5c59890 100644
--- a/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-general.json
+++ b/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-general.json
@@ -4,10 +4,10 @@
"title": "General",
"fields": [
{
- "key": "field_5bc0965a35406",
- "label": "Type",
- "name": "_wiaas_product_type",
- "type": "select",
+ "key": "field_5bceef4c9771c",
+ "label": "General",
+ "name": "_wiaas_product_general",
+ "type": "group",
"instructions": "",
"required": 0,
"conditional_logic": 0,
@@ -16,48 +16,65 @@
"class": "",
"id": ""
},
- "choices": {
- "simple": "Simple",
- "bundle": "Bundle",
- "wiaastemplate": "Template"
- },
- "default_value": [],
- "allow_null": 0,
- "multiple": 0,
- "ui": 1,
- "ajax": 0,
- "return_format": "value",
- "placeholder": ""
- },
- {
- "key": "field_5bbf899bba1af",
- "label": "Country",
- "name": "_wiaas_product_country",
- "type": "taxonomy",
- "instructions": "",
- "required": 0,
- "conditional_logic": [
- [
- {
- "field": "field_5bc0965a35406",
- "operator": "!=",
- "value": "wiaastemplate"
- }
- ]
- ],
- "wrapper": {
- "width": "",
- "class": "",
- "id": ""
- },
- "taxonomy": "product_country",
- "field_type": "select",
- "allow_null": 0,
- "add_term": 0,
- "save_terms": 1,
- "load_terms": 1,
- "return_format": "id",
- "multiple": 0
+ "layout": "block",
+ "sub_fields": [
+ {
+ "key": "field_5bc0965a35406",
+ "label": "Type",
+ "name": "_wiaas_product_type",
+ "type": "select",
+ "instructions": "",
+ "required": 0,
+ "conditional_logic": 0,
+ "wrapper": {
+ "width": "",
+ "class": "",
+ "id": ""
+ },
+ "choices": {
+ "simple": "Simple",
+ "bundle": "Bundle",
+ "wiaastemplate": "Template"
+ },
+ "default_value": [],
+ "allow_null": 0,
+ "multiple": 0,
+ "ui": 1,
+ "ajax": 0,
+ "return_format": "value",
+ "placeholder": ""
+ },
+ {
+ "key": "field_5bbf899bba1af",
+ "label": "Country",
+ "name": "_wiaas_product_country",
+ "type": "taxonomy",
+ "instructions": "",
+ "required": 1,
+ "conditional_logic": [
+ [
+ {
+ "field": "field_5bc0965a35406",
+ "operator": "!=",
+ "value": "wiaastemplate"
+ }
+ ]
+ ],
+ "wrapper": {
+ "width": "",
+ "class": "",
+ "id": ""
+ },
+ "taxonomy": "product_country",
+ "field_type": "select",
+ "allow_null": 0,
+ "add_term": 0,
+ "save_terms": 1,
+ "load_terms": 1,
+ "return_format": "id",
+ "multiple": 0
+ }
+ ]
}
],
"location": [
@@ -76,7 +93,7 @@
],
"menu_order": 0,
"position": "acf_after_title",
- "style": "default",
+ "style": "seamless",
"label_placement": "top",
"instruction_placement": "label",
"hide_on_screen": "",