/** * Add metaboxes to the custom post types defined by entities */ public static function add_meta_boxes_to_custom_types($post) { global $post, $wpdb; /* * Add a specific metabox for customer */ if ($post->post_type == WPSHOP_NEWTYPE_IDENTIFIER_CUSTOMERS) { //add_meta_box($post->post_type . '_customers_purchase', __('Orders', 'wpshop'), array('wpshop_orders', 'display_orders_for_customer'), $post->post_type, 'normal'); //add_meta_box ($post->post_type.'_customer_note', __('Customers Notes' , 'wpshop'), array('wpshop_customer', 'display_notes_for_customer'), $post->post_type, 'side'); } /* * Product are managed from another place */ if ($post->post_type != WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT) { /* * Get the attribute set list for current entity */ $attribute_set_list = wpshop_attributes_set::get_attribute_set_list_for_entity(wpshop_entities::get_entity_identifier_from_code($post->post_type)); /* * Check if a attribute set is defined for current entity */ $attribute_set_id = get_post_meta($post->ID, sprintf(WPSHOP_ATTRIBUTE_SET_ID_META_KEY, $post->post_type), true); if (count($attribute_set_list) == 1 || count($attribute_set_list) > 1 && !empty($attribute_set_id)) { if (count($attribute_set_list) == 1 || empty($attribute_set_id)) { $attribute_set_id = $attribute_set_list[0]->id; } /* * Get attribute list for the current entity */ $currentTabContent = wpshop_attributes::entities_attribute_box($attribute_set_id, $post->post_type, $post->ID); $fixed_box_exist = false; /* * Read the different element for building output for current entity */ if (!empty($currentTabContent['box']) && is_array($currentTabContent['box'])) { foreach ($currentTabContent['box'] as $boxIdentifier => $boxTitle) { if (!empty($currentTabContent['box'][$boxIdentifier . '_backend_display_type']) && $currentTabContent['box'][$boxIdentifier . '_backend_display_type'] == 'movable-tab') { add_meta_box($post->post_type . '_' . $boxIdentifier, __($boxTitle, 'wpshop'), array('wpshop_entities', 'meta_box_content'), $post->post_type, 'normal', 'default', array('currentTabContent' => $currentTabContent['boxContent'][$boxIdentifier])); } else { $fixed_box_exist = true; } } } if ($fixed_box_exist && $post->post_type != WPSHOP_NEWTYPE_IDENTIFIER_CUSTOMERS) { add_meta_box($post->post_type . '_fixed_tab', __('Informations', 'wpshop'), array('wpshop_entities', 'meta_box_content_datas'), $post->post_type, 'normal', 'high', array('currentTabContent' => $currentTabContent)); } } elseif (count($attribute_set_list) > 1) { $input_def['id'] = $post->post_type . '_attribute_set_id'; $input_def['name'] = $post->post_type . '_attribute_set_id'; $input_def['value'] = ''; $input_def['type'] = 'select'; $input_def['possible_value'] = $attribute_set_list; $input_def['value'] = ''; foreach ($attribute_set_list as $set) { if ($set->default_set == 'yes') { $input_def['value'] = $set->id; } } $currentTabContent = ' <ul class="attribute_set_selector" > <li class="attribute_set_selector_title_select" ><label for="title" >' . sprintf(__('Choose a title for the %s', 'wpshop'), get_the_title(wpshop_entities::get_entity_identifier_from_code($post->post_type))) . '</label></li> <li class="attribute_set_selector_group_selector" ><label for="' . $input_def['id'] . '" >' . sprintf(__('Choose an attribute group for this %s', 'wpshop'), get_the_title(wpshop_entities::get_entity_identifier_from_code($post->post_type))) . '</label> ' . wpshop_form::check_input_type($input_def) . '</li> <li class="attribute_set_selector_save_instruction" >' . sprintf(__('Save the %s with the "Save draft" button on the right side', 'wpshop'), get_the_title(wpshop_entities::get_entity_identifier_from_code($post->post_type))) . '</li> <li class="attribute_set_selector_after_save_instruction" >' . __('Once the group chosen, the different attribute will be displayed here', 'wpshop') . '</li> </ul>'; add_meta_box($post->post_type . '_attribute_set_selector', sprintf(__('%s attributes', 'wpshop'), get_the_title(wpshop_entities::get_entity_identifier_from_code($post->post_type))), array('wpshop_entities', 'meta_box_content'), $post->post_type, 'normal', 'high', array('currentTabContent' => $currentTabContent)); } } }
/** * Create the different bow for the product management page looking for the attribute set to create the different boxes */ public static function add_meta_boxes() { global $post, $currentTabContent; if (!empty($post->post_type) && ($post->post_type == WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT || $post->post_type == WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT_VARIATION)) { /* Get the attribute set list for the current entity */ $attributeEntitySetList = wpshop_attributes_set::get_attribute_set_list_for_entity(wpshop_entities::get_entity_identifier_from_code(self::currentPageCode)); /* Check if the meta information of the current product already exists */ $post_attribute_set_id = get_post_meta($post->ID, WPSHOP_PRODUCT_ATTRIBUTE_SET_ID_META_KEY, true); /* Check if the product has been saved without meta information set */ $attribute_set_id = wpshop_attributes::get_attribute_value_content('product_attribute_set_id', $post->ID, self::currentPageCode); /* Unset 'free_product' from list of attributes set */ foreach ($attributeEntitySetList as $key_attribute_set => $attribute_set) { if ($attribute_set->name == 'free_product') { unset($attributeEntitySetList[$key_attribute_set]); break; } } /* Check if an attribute has already been choosen for the curernt entity or if the user has to choose a entity set before continuing */ if (count($attributeEntitySetList) == 1 || count($attributeEntitySetList) > 1 && ($post_attribute_set_id > 0 || isset($attribute_set_id->value) && $attribute_set_id->value > 0)) { if (count($attributeEntitySetList) == 1 || $post_attribute_set_id <= 0 && $attribute_set_id->value <= 0) { $post_attribute_set_id = $attributeEntitySetList[0]->id; } elseif ($post_attribute_set_id <= 0 && $attribute_set_id->value > 0) { $post_attribute_set_id = $attribute_set_id->value; } $currentTabContent = wpshop_attributes::entities_attribute_box($post_attribute_set_id, self::currentPageCode, $post->ID); $fixed_box_exist = false; /* Get all the other attribute set for hte current entity */ if (isset($currentTabContent['box']) && count($currentTabContent['box']) > 0) { foreach ($currentTabContent['box'] as $boxIdentifier => $boxTitle) { if (!empty($currentTabContent['box'][$boxIdentifier . '_backend_display_type']) && $currentTabContent['box'][$boxIdentifier . '_backend_display_type'] == 'movable-tab') { add_meta_box('wpshop_product_' . $boxIdentifier, __($boxTitle, 'wpshop'), array('wpshop_products', 'meta_box_content'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT, 'normal', 'default', array('boxIdentifier' => $boxIdentifier)); } else { $fixed_box_exist = true; } } } if ($fixed_box_exist) { add_meta_box('wpshop_product_fixed_tab', __('Product data', 'wpshop'), array('wpshop_products', 'product_data_meta_box'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT, 'normal', 'high', array('currentTabContent' => $currentTabContent)); add_meta_box('wpshop_product_fixed_tab', __('Product data', 'wpshop'), array('wpshop_products', 'product_data_meta_box'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT_VARIATION, 'normal', 'high', array('currentTabContent' => $currentTabContent)); } add_meta_box('wpshop_wpshop_variations', __('Product variation', 'wpshop'), array('wpshop_products', 'meta_box_variations'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT, 'normal', 'default'); // Actions add_meta_box('wpshop_product_actions', __('Actions', 'wpshop'), array('wpshop_products', 'product_actions_meta_box_content'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT, 'side', 'default'); /** Product option */ add_meta_box('wpshop_product_options', __('Options', 'wpshop'), array('wpshop_products', 'product_options_meta_box_content'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT, 'side', 'default'); } else { if (count($attributeEntitySetList) > 1) { $input_def['id'] = 'product_attribute_set_id'; $input_def['name'] = 'product_attribute_set_id'; $input_def['value'] = ''; $input_def['type'] = 'select'; $input_def['possible_value'] = $attributeEntitySetList; $input_def['value'] = ''; foreach ($attributeEntitySetList as $set) { if ($set->default_set == 'yes') { $input_def['value'] = $set->id; } } $currentTabContent['boxContent']['attribute_set_selector'] = ' <ul class="attribute_set_selector" > <li class="attribute_set_selector_title_select" ><label for="title" >' . __('Choose a title for your product', 'wpshop') . '</label></li> <li class="attribute_set_selector_group_selector" ><label for="' . $input_def['id'] . '" >' . __('Choose an attribute group for this product', 'wpshop') . '</label> ' . wpshop_form::check_input_type($input_def, self::currentPageCode . '_attribute[integer]') . '</li> <li class="attribute_set_selector_save_instruction" >' . __('Save the product with the "Save draft" button on the right side', 'wpshop') . '</li> <li class="attribute_set_selector_after_save_instruction" >' . __('Once the group chosen, the different attribute will be displayed here', 'wpshop') . '</li> </ul>'; add_meta_box('wpshop_product_attribute_set_selector', __('Product attributes', 'wpshop'), array('wpshop_products', 'meta_box_content'), WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT, 'normal', 'high', array('boxIdentifier' => 'attribute_set_selector')); } } } }