Merge branch 'master' into checkout-documents
This commit is contained in:
@@ -1,76 +1,23 @@
|
|||||||
jQuery(function ($) {
|
jQuery(function ($) {
|
||||||
|
|
||||||
var $edit_in_cart = $('.bundle_edit_in_cart'),
|
var $template_categories_container_hardware = $('.wiaas-template-items_hardware'),
|
||||||
$group_mode_select = $('select#_wc_pb_group_mode'),
|
$template_categories_container_software = $('.wiaas-template-items_software'),
|
||||||
$bundled_products_panel = $('#bundled_product_data'),
|
$template_categories_container_services = $('.wiaas-template-items_services'),
|
||||||
$bundled_products_toolbar = $bundled_products_panel.find('.toolbar'),
|
$template_categories_container_isntallation = $('.wiaas-template-items_installation'),
|
||||||
$template_products_container_hardware = $('.wiaas-template-items_hardware'),
|
|
||||||
$template_products_container_software = $('.wiaas-template-items_software'),
|
|
||||||
$template_products_container_services = $('.wiaas-template-items_services'),
|
|
||||||
$template_products_container_isntallation = $('.wiaas-template-items_installation'),
|
|
||||||
|
|
||||||
$template_products = $('.wc-bundled-item',
|
$template_categories = $('.wc-bundled-item',
|
||||||
$template_products_container_services,
|
$template_categories_container_services,
|
||||||
$template_products_container_software,
|
$template_categories_container_software,
|
||||||
$template_products_container_hardware,
|
$template_categories_container_hardware,
|
||||||
$template_products_container_isntallation),
|
$template_categories_container_isntallation),
|
||||||
|
|
||||||
$template_search_hardware = $('#wiaastemplate_products_hardware'),
|
$template_search_hardware = $('#wiaastemplate_products_hardware'),
|
||||||
$template_search_software = $('#wiaastemplate_products_software'),
|
$template_search_software = $('#wiaastemplate_products_software'),
|
||||||
$template_search_services = $('#wiaastemplate_products_services'),
|
$template_search_services = $('#wiaastemplate_products_services'),
|
||||||
$template_search_installation = $('#wiaastemplate_products_installation'),
|
$template_search_installation = $('#wiaastemplate_products_installation'),
|
||||||
bundled_product_objects = {},
|
template_category_objects = {},
|
||||||
bundled_products_add_count = $template_products.length,
|
template_category_add_count = $template_categories.length;
|
||||||
block_params = {
|
|
||||||
message: null,
|
|
||||||
overlayCSS: {
|
|
||||||
background: '#fff',
|
|
||||||
opacity: 0.6
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
$.fn.wc_bundles_select2 = function () {
|
|
||||||
$(document.body).trigger('wc-enhanced-select-init');
|
|
||||||
};
|
|
||||||
|
|
||||||
// Bundle type move stock msg up.
|
|
||||||
$('.bundle_stock_msg').appendTo('._manage_stock_field .description');
|
|
||||||
|
|
||||||
// Simple type options are valid for bundles.
|
|
||||||
$('.show_if_simple:not(.hide_if_bundle)').addClass('show_if_bundle');
|
|
||||||
|
|
||||||
$('body').on('woocommerce-product-type-change', function (event, select_val) {
|
|
||||||
|
|
||||||
if ('bundle' === select_val) {
|
|
||||||
|
|
||||||
$('.show_if_external').hide();
|
|
||||||
$('.show_if_bundle').show();
|
|
||||||
|
|
||||||
$('input#_manage_stock').change();
|
|
||||||
|
|
||||||
$('#_nyp').change();
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$group_mode_select.change(function () {
|
|
||||||
if ($.inArray($group_mode_select.val(), wc_bundles_admin_params.group_modes_with_parent) === -1) {
|
|
||||||
$edit_in_cart.hide();
|
|
||||||
} else {
|
|
||||||
$edit_in_cart.show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Downloadable support.
|
|
||||||
$('input#_downloadable').change(function () {
|
|
||||||
$('select#product-type').change();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Trigger product type change.
|
|
||||||
$('select#product-type').change();
|
|
||||||
|
|
||||||
// Trigger group mode change.
|
|
||||||
$group_mode_select.change();
|
|
||||||
|
|
||||||
|
|
||||||
init_event_handlers();
|
init_event_handlers();
|
||||||
@@ -81,52 +28,50 @@ jQuery(function ($) {
|
|||||||
$template_search_hardware
|
$template_search_hardware
|
||||||
|
|
||||||
.on('change', function () {
|
.on('change', function () {
|
||||||
addSearchedProduct('hardware', $template_search_hardware, $template_products_container_hardware)
|
addSearchedTemplateCategory('hardware', $template_search_hardware, $template_categories_container_hardware)
|
||||||
});
|
});
|
||||||
|
|
||||||
$template_search_software
|
$template_search_software
|
||||||
|
|
||||||
.on('change', function () {
|
.on('change', function () {
|
||||||
addSearchedProduct('software', $template_search_software, $template_products_container_software)
|
addSearchedTemplateCategory('software', $template_search_software, $template_categories_container_software)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$template_search_installation
|
$template_search_installation
|
||||||
|
|
||||||
.on('change', function () {
|
.on('change', function () {
|
||||||
addSearchedProduct('services', $template_search_installation, $template_products_container_isntallation)
|
addSearchedTemplateCategory('installation', $template_search_installation, $template_categories_container_isntallation)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$template_search_services
|
$template_search_services
|
||||||
|
|
||||||
.on('change', function () {
|
.on('change', function () {
|
||||||
addSearchedProduct('installation', $template_search_services, $template_products_container_services)
|
addSearchedTemplateCategory('services', $template_search_services, $template_categories_container_services)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function addSearchedProduct(options, search, container) {
|
function addSearchedTemplateCategory(options, search, container) {
|
||||||
var bundled_product_ids = search.val(),
|
var template_category_ids = search.val(),
|
||||||
bundled_product_id = bundled_product_ids && bundled_product_ids.length > 0 ? bundled_product_ids.shift() : false;
|
template_category_id = template_category_ids && template_category_ids.length > 0 ? template_category_ids.shift() : false;
|
||||||
|
|
||||||
var template_category_title =search.text();
|
var template_category_title =search.text();
|
||||||
|
|
||||||
if (!bundled_product_id) {
|
if (!template_category_id) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
search.val([]).change();
|
search.val([]).change();
|
||||||
|
|
||||||
$bundled_products_panel.block(block_params);
|
template_category_add_count++;
|
||||||
|
|
||||||
bundled_products_add_count++;
|
|
||||||
|
|
||||||
var data = {
|
var data = {
|
||||||
action: 'wiaas_add_template_product',
|
action: 'wiaas_add_template_product',
|
||||||
post_id: woocommerce_admin_meta_boxes.post_id,
|
post_id: woocommerce_admin_meta_boxes.post_id,
|
||||||
id: bundled_products_add_count,
|
id: template_category_add_count,
|
||||||
title: template_category_title,
|
title: template_category_title,
|
||||||
product_id: bundled_product_id,
|
template_category_id: template_category_id,
|
||||||
security: wc_bundles_admin_params.add_bundled_product_nonce,
|
security: wc_bundles_admin_params.add_bundled_product_nonce,
|
||||||
options: options,
|
options: options,
|
||||||
};
|
};
|
||||||
@@ -140,13 +85,11 @@ jQuery(function ($) {
|
|||||||
container.append(response.markup);
|
container.append(response.markup);
|
||||||
|
|
||||||
var $added = $('.wiaas-template-item', container).last(),
|
var $added = $('.wiaas-template-item', container).last(),
|
||||||
added_id = 'bundled_item_' + bundled_products_add_count;
|
added_id = 'bundled_item_' + template_category_add_count;
|
||||||
|
|
||||||
$added.data('bundled_item_id', added_id);
|
$added.data('bundled_item_id', added_id);
|
||||||
$added.wc_bundles_select2();
|
$added.wc_bundles_select2();
|
||||||
|
|
||||||
$bundled_products_panel.trigger('wc-bundles-added-bundled-product');
|
|
||||||
|
|
||||||
} else if (response.message !== '') {
|
} else if (response.message !== '') {
|
||||||
window.alert(response.message);
|
window.alert(response.message);
|
||||||
}
|
}
|
||||||
@@ -161,8 +104,6 @@ jQuery(function ($) {
|
|||||||
}
|
}
|
||||||
search.text('');
|
search.text('');
|
||||||
|
|
||||||
$bundled_products_panel.unblock();
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}, 250);
|
}, 250);
|
||||||
@@ -170,7 +111,7 @@ jQuery(function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$template_products_container_isntallation
|
$template_categories_container_isntallation
|
||||||
|
|
||||||
// Remove Item.
|
// Remove Item.
|
||||||
.on('click', 'a.remove_row', function (e) {
|
.on('click', 'a.remove_row', function (e) {
|
||||||
@@ -181,15 +122,13 @@ jQuery(function ($) {
|
|||||||
$el.find('*').off();
|
$el.find('*').off();
|
||||||
$el.remove();
|
$el.remove();
|
||||||
|
|
||||||
delete bundled_product_objects[el_id];
|
delete template_category_objects[el_id];
|
||||||
|
|
||||||
$bundled_products_panel.triggerHandler('wc-bundled-products-changed');
|
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$template_products_container_hardware
|
$template_categories_container_hardware
|
||||||
|
|
||||||
// Remove Item.
|
// Remove Item.
|
||||||
.on('click', 'a.remove_row', function (e) {
|
.on('click', 'a.remove_row', function (e) {
|
||||||
@@ -200,15 +139,13 @@ jQuery(function ($) {
|
|||||||
$el.find('*').off();
|
$el.find('*').off();
|
||||||
$el.remove();
|
$el.remove();
|
||||||
|
|
||||||
delete bundled_product_objects[el_id];
|
delete template_category_objects[el_id];
|
||||||
|
|
||||||
$bundled_products_panel.triggerHandler('wc-bundled-products-changed');
|
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$template_products_container_software
|
$template_categories_container_software
|
||||||
|
|
||||||
// Remove Item.
|
// Remove Item.
|
||||||
.on('click', 'a.remove_row', function (e) {
|
.on('click', 'a.remove_row', function (e) {
|
||||||
@@ -219,15 +156,13 @@ jQuery(function ($) {
|
|||||||
$el.find('*').off();
|
$el.find('*').off();
|
||||||
$el.remove();
|
$el.remove();
|
||||||
|
|
||||||
delete bundled_product_objects[el_id];
|
delete template_category_objects[el_id];
|
||||||
|
|
||||||
$bundled_products_panel.triggerHandler('wc-bundled-products-changed');
|
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$template_products_container_services
|
$template_categories_container_services
|
||||||
|
|
||||||
// Remove Item.
|
// Remove Item.
|
||||||
.on('click', 'a.remove_row', function (e) {
|
.on('click', 'a.remove_row', function (e) {
|
||||||
@@ -238,9 +173,7 @@ jQuery(function ($) {
|
|||||||
$el.find('*').off();
|
$el.find('*').off();
|
||||||
$el.remove();
|
$el.remove();
|
||||||
|
|
||||||
delete bundled_product_objects[el_id];
|
delete template_category_objects[el_id];
|
||||||
|
|
||||||
$bundled_products_panel.triggerHandler('wc-bundled-products-changed');
|
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
|||||||
@@ -3,27 +3,35 @@
|
|||||||
class Wiaas_Admin_Template_Selection {
|
class Wiaas_Admin_Template_Selection {
|
||||||
|
|
||||||
public static function init() {
|
public static function init() {
|
||||||
add_action('add_meta_boxes', array(__CLASS__, 'create_custom_meta_box'), 100);
|
add_action('add_meta_boxes', array(__CLASS__, 'create_template_meta_box'), 100);
|
||||||
add_action('woocommerce_process_product_meta_bundle', array(__CLASS__, 'save_custom_content_meta_box'), 10, 1);
|
add_action('woocommerce_process_product_meta_bundle', array(__CLASS__, 'save_template_content_meta_box'), 10, 1);
|
||||||
|
|
||||||
// Processes and saves type-specific data.
|
// Processes and saves type-specific data.
|
||||||
add_action('woocommerce_admin_process_product_object', array(__CLASS__, 'validate_bundle'), 11);
|
add_action('woocommerce_admin_process_product_object', array(__CLASS__, 'validate_bundle'), 11);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function create_custom_meta_box() {
|
/**
|
||||||
|
* Renders template selection meta box
|
||||||
|
*/
|
||||||
|
public static function create_template_meta_box() {
|
||||||
add_meta_box(
|
add_meta_box(
|
||||||
'template_product_meta_box',
|
'template_product_meta_box',
|
||||||
__('Choose package template <em>(optional)</em>', 'cmb'),
|
__('Choose package template <em>(optional)</em>', 'cmb'),
|
||||||
'Wiaas_Admin_Template_Selection::add_custom_content_meta_box',
|
'Wiaas_Admin_Template_Selection::add_template_content_meta_box',
|
||||||
'product',
|
'product',
|
||||||
'normal',
|
'normal',
|
||||||
'high'
|
'high'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
public static function add_custom_content_meta_box($post) {
|
* Fill in the value of template selection dropdown,
|
||||||
|
* and render template categories of the selected template
|
||||||
|
*
|
||||||
|
* @param $post WP_Post object
|
||||||
|
*/
|
||||||
|
public static function add_template_content_meta_box($post) {
|
||||||
|
|
||||||
$value = get_post_meta($post->ID, '_select_template', true);
|
$value = get_post_meta($post->ID, '_select_template', true);
|
||||||
|
|
||||||
@@ -49,49 +57,82 @@ class Wiaas_Admin_Template_Selection {
|
|||||||
$template_products_data = self::show_template_products($value);
|
$template_products_data = self::show_template_products($value);
|
||||||
|
|
||||||
self::render_template_products($template_products_data['hardware']);
|
self::render_template_products($template_products_data['hardware']);
|
||||||
self::render_template_products($template_products_data['service']);
|
self::render_template_products($template_products_data['services']);
|
||||||
self::render_template_products($template_products_data['installation']);
|
self::render_template_products($template_products_data['installation']);
|
||||||
self::render_template_products($template_products_data['software']);
|
self::render_template_products($template_products_data['software']);
|
||||||
?></div><?php
|
?></div><?php
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function get_categories_from_templates($products_form_template) {
|
/**
|
||||||
|
* Extract template categories for all of the main product categories
|
||||||
|
* (software , hardware, services, installation) and combine them in one array
|
||||||
|
*
|
||||||
|
* @param $categories_form_template
|
||||||
|
* @return array of Wiaas_Template_Category_Object
|
||||||
|
*/
|
||||||
|
public static function get_categories_from_templates($categories_form_template) {
|
||||||
|
|
||||||
$all_template_categories = array();
|
$all_template_categories = array();
|
||||||
|
|
||||||
$all_template_categories = array_merge($all_template_categories, self::get_product_categories($products_form_template['hardware']));
|
$all_template_categories = array_merge($all_template_categories,
|
||||||
$all_template_categories = array_merge($all_template_categories, self::get_product_categories($products_form_template['service']));
|
WC_Product_Template::extract_template_product_categories($categories_form_template['hardware']));
|
||||||
$all_template_categories = array_merge($all_template_categories, self::get_product_categories($products_form_template['installation']));
|
|
||||||
$all_template_categories = array_merge($all_template_categories, self::get_product_categories($products_form_template['software']));
|
$all_template_categories = array_merge($all_template_categories,
|
||||||
|
WC_Product_Template::extract_template_product_categories($categories_form_template['services']));
|
||||||
|
|
||||||
|
$all_template_categories = array_merge($all_template_categories,
|
||||||
|
WC_Product_Template::extract_template_product_categories($categories_form_template['installation']));
|
||||||
|
|
||||||
|
$all_template_categories = array_merge($all_template_categories,
|
||||||
|
WC_Product_Template::extract_template_product_categories($categories_form_template['software']));
|
||||||
|
|
||||||
return $all_template_categories;
|
return $all_template_categories;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all of the template product meta_data from selected template
|
||||||
|
*
|
||||||
|
* @param $selected_template integer an id of selected template
|
||||||
|
* @return array of template categories
|
||||||
|
*/
|
||||||
public static function show_template_products($selected_template) {
|
public static function show_template_products($selected_template) {
|
||||||
|
|
||||||
|
|
||||||
if (empty($selected_template)) {
|
if (empty($selected_template)) {
|
||||||
return;
|
return array();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$template_products_hardware = (get_post_meta($selected_template, '_template_items_hardware', true));
|
|
||||||
$template_products_service = (get_post_meta($selected_template, '_template_items_service', true));
|
$template_products_hardware = WC_Product_Template::get_template_categories_from_meta(
|
||||||
$template_products_installation = (get_post_meta($selected_template, '_template_items_installation', true));
|
$selected_template, '_template_items_hardware');
|
||||||
$template_products_software = (get_post_meta($selected_template, '_template_items_software', true));
|
|
||||||
|
$template_products_services = WC_Product_Template::get_template_categories_from_meta(
|
||||||
|
$selected_template, '_template_items_services');
|
||||||
|
|
||||||
|
$template_products_installation = WC_Product_Template::get_template_categories_from_meta(
|
||||||
|
$selected_template, '_template_items_installation');
|
||||||
|
|
||||||
|
$template_products_software = WC_Product_Template::get_template_categories_from_meta(
|
||||||
|
$selected_template, '_template_items_software');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'hardware' => $template_products_hardware,
|
'hardware' => $template_products_hardware,
|
||||||
'service' => $template_products_service,
|
'services' => $template_products_services,
|
||||||
'installation' => $template_products_installation,
|
'installation' => $template_products_installation,
|
||||||
'software' => $template_products_software
|
'software' => $template_products_software
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render html of template categories
|
||||||
|
*
|
||||||
|
* @param $template_products array containing template category information
|
||||||
|
*/
|
||||||
public static function render_template_products($template_products) {
|
public static function render_template_products($template_products) {
|
||||||
if (!empty($template_products)) {
|
if (!empty($template_products)) {
|
||||||
|
|
||||||
@@ -108,90 +149,43 @@ class Wiaas_Admin_Template_Selection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function get_product_categories($category_meta) {
|
|
||||||
$category_objects = array();
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save selected template
|
||||||
|
*
|
||||||
|
* @param $post_id WP_Post
|
||||||
|
*/
|
||||||
|
|
||||||
if (empty($category_meta)) {
|
function save_template_content_meta_box($post_id) {
|
||||||
return array();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($category_meta as $meta) {
|
|
||||||
|
|
||||||
if (!empty($meta)) {
|
|
||||||
|
|
||||||
|
|
||||||
$category_template_id = $meta['template_category_id'];
|
|
||||||
|
|
||||||
$template_category_object = new Wiaas_Template_Category_Object(
|
|
||||||
$category_template_id,
|
|
||||||
$meta['template_category_title'],
|
|
||||||
$meta['quantity']);
|
|
||||||
|
|
||||||
$category_objects[$category_template_id] = $template_category_object;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return empty($category_objects) ? null : $category_objects;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function get_bundled_product_categories($bundled_items) {
|
|
||||||
|
|
||||||
$template_category_objects = array();
|
|
||||||
foreach ($bundled_items as $item_id => $item) {
|
|
||||||
$item_data = $item->get_data();
|
|
||||||
$post_terms = wp_get_object_terms($item->get_product_id(), 'template_category', array('fields' => 'id=>name'));
|
|
||||||
|
|
||||||
if (!empty($post_terms) && !is_wp_error($post_terms)) {
|
|
||||||
|
|
||||||
$cat = '';
|
|
||||||
$category_template_id = '';
|
|
||||||
|
|
||||||
foreach ($post_terms as $id => $term) {
|
|
||||||
$cat = $term;
|
|
||||||
$category_template_id = $id;
|
|
||||||
}
|
|
||||||
|
|
||||||
$template_category_object = new Wiaas_Template_Category_Object(
|
|
||||||
$category_template_id,
|
|
||||||
$cat,
|
|
||||||
$item_data['quantity_max']);
|
|
||||||
$template_category_objects[$category_template_id] = $template_category_object;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $template_category_objects;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function save_custom_content_meta_box($post_id) {
|
|
||||||
$selected_template = $_POST['_select_template'];
|
$selected_template = $_POST['_select_template'];
|
||||||
if (!empty($selected_template))
|
|
||||||
update_post_meta($post_id, '_select_template', esc_attr($selected_template));
|
WC_Product_Template::bind_selected_template_to_product($selected_template, $post_id);
|
||||||
else {
|
|
||||||
update_post_meta($post_id, '_select_template', '');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the template categories from bundle products and selected template
|
||||||
|
* Compare template categories and quantities that are required by the template with those in bundle products
|
||||||
|
*
|
||||||
|
* Admin error is added if validation is not satisfied
|
||||||
|
*
|
||||||
|
* @param $product WC_Product_Bundle
|
||||||
|
*/
|
||||||
public static function validate_bundle($product) {
|
public static function validate_bundle($product) {
|
||||||
|
|
||||||
|
|
||||||
if ($product->get_type() == 'bundle') {
|
if ($product->get_type() == 'bundle') {
|
||||||
$selected_template = $_POST['_select_template'];
|
$selected_template = $_POST['_select_template'];
|
||||||
$bundled_items = $product->get_bundled_items('view');
|
$bundled_items = $product->get_bundled_items('view');
|
||||||
$products_form_template = self::show_template_products($selected_template);
|
$template_categories_form_template = self::show_template_products($selected_template);
|
||||||
|
|
||||||
$missing_categories = array();
|
$missing_template_categories = array();
|
||||||
$insufficient_product_quantities = array();
|
$insufficient_template_category_quantities = array();
|
||||||
|
|
||||||
|
$categories_form_template = self::get_categories_from_templates($template_categories_form_template);
|
||||||
$categories_form_template = self::get_categories_from_templates($products_form_template);
|
$categories_form_bundle = WC_Product_Template::extract_bundled_product_categories($bundled_items);
|
||||||
$categories_form_bundle = self::get_bundled_product_categories($bundled_items);
|
|
||||||
$bundle_category_keys = array_keys($categories_form_bundle);
|
$bundle_category_keys = array_keys($categories_form_bundle);
|
||||||
|
|
||||||
|
|
||||||
if (!empty($categories_form_template)) {
|
if (!empty($categories_form_template)) {
|
||||||
|
|
||||||
foreach ($categories_form_template as $category) {
|
foreach ($categories_form_template as $category) {
|
||||||
@@ -200,7 +194,7 @@ class Wiaas_Admin_Template_Selection {
|
|||||||
|
|
||||||
if (!in_array($template_cat_id, $bundle_category_keys)) {
|
if (!in_array($template_cat_id, $bundle_category_keys)) {
|
||||||
|
|
||||||
array_push($missing_categories, $category->name);
|
array_push($missing_template_categories, $category->name);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -208,37 +202,25 @@ class Wiaas_Admin_Template_Selection {
|
|||||||
$quantity_from_template = $category->quantity;
|
$quantity_from_template = $category->quantity;
|
||||||
|
|
||||||
if ((int)($quantity_from_template) !== $product_from_bundle_quantity) {
|
if ((int)($quantity_from_template) !== $product_from_bundle_quantity) {
|
||||||
array_push($insufficient_product_quantities, $category->name);
|
array_push($insufficient_template_category_quantities, $category->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$categories_message = implode(',', $missing_categories);
|
$template_categories_message = implode(',', $missing_template_categories);
|
||||||
$quantity_message = implode(',', $insufficient_product_quantities);
|
$quantity_message = implode(',', $insufficient_template_category_quantities);
|
||||||
|
|
||||||
if (!empty($missing_categories)) {
|
if (!empty($missing_template_categories)) {
|
||||||
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories missing: ' . $categories_message, 'woocommerce-product-bundles'));
|
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories missing: ' . $template_categories_message, 'woocommerce-product-bundles'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($insufficient_product_quantities)) {
|
if (!empty($insufficient_template_category_quantities)) {
|
||||||
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories with different quantities: ' . $quantity_message, 'woocommerce-product-bundles'));
|
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories with different quantities: ' . $quantity_message, 'woocommerce-product-bundles'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function get_category_ids_form_bundle($product) {
|
|
||||||
$products_form_budnle = $product->get_bundled_data_items();
|
|
||||||
$product_ids = array();
|
|
||||||
|
|
||||||
foreach ($products_form_budnle as $product) {
|
|
||||||
array_push($product_ids, $product->get_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
return self::get_product_categories($product_ids);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Wiaas_Admin_Template_Selection::init();
|
Wiaas_Admin_Template_Selection::init();
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ class Wiaas_Template_Admin_Ajax {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An ajax callback action for handling template selection
|
||||||
|
*/
|
||||||
|
|
||||||
public static function ajax_handle_template_selection() {
|
public static function ajax_handle_template_selection() {
|
||||||
|
|
||||||
$selected_template_id = intval($_POST['selected_template']);
|
$selected_template_id = intval($_POST['selected_template']);
|
||||||
@@ -34,7 +38,7 @@ class Wiaas_Template_Admin_Ajax {
|
|||||||
if (!empty($template_products)) {
|
if (!empty($template_products)) {
|
||||||
ob_start();
|
ob_start();
|
||||||
Wiaas_Admin_Template_Selection::render_template_products($template_products['hardware']);
|
Wiaas_Admin_Template_Selection::render_template_products($template_products['hardware']);
|
||||||
Wiaas_Admin_Template_Selection::render_template_products($template_products['service']);
|
Wiaas_Admin_Template_Selection::render_template_products($template_products['services']);
|
||||||
Wiaas_Admin_Template_Selection::render_template_products($template_products['installation']);
|
Wiaas_Admin_Template_Selection::render_template_products($template_products['installation']);
|
||||||
Wiaas_Admin_Template_Selection::render_template_products($template_products['software']);
|
Wiaas_Admin_Template_Selection::render_template_products($template_products['software']);
|
||||||
|
|
||||||
@@ -53,7 +57,7 @@ class Wiaas_Template_Admin_Ajax {
|
|||||||
check_ajax_referer('wc_bundles_add_bundled_product', 'security');
|
check_ajax_referer('wc_bundles_add_bundled_product', 'security');
|
||||||
|
|
||||||
$loop = intval($_POST['id']);
|
$loop = intval($_POST['id']);
|
||||||
$product_id = intval($_POST['product_id']);
|
$template_category_id = intval($_POST['template_category_id']);
|
||||||
$title = $_POST['title'];
|
$title = $_POST['title'];
|
||||||
$options = $_POST['options'];
|
$options = $_POST['options'];
|
||||||
|
|
||||||
@@ -70,13 +74,13 @@ class Wiaas_Template_Admin_Ajax {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Handles adding template categories search.
|
||||||
*/
|
*/
|
||||||
public static function ajax_wiaas_template_category_search() {
|
public static function ajax_wiaas_template_category_search() {
|
||||||
|
|
||||||
$term = ($_POST['term']);
|
$term = wp_unslash($_GET['term']);
|
||||||
$response = array();
|
$response = array();
|
||||||
|
|
||||||
$terms = get_terms(array(
|
$terms = get_terms(array(
|
||||||
'taxonomy' => 'template_category',
|
'taxonomy' => 'template_category',
|
||||||
'name__like' => $term
|
'name__like' => $term
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ class Wiaas_template {
|
|||||||
|
|
||||||
public static function init() {
|
public static function init() {
|
||||||
add_filter('product_type_selector', array(__CLASS__, 'add_template_product_type'));
|
add_filter('product_type_selector', array(__CLASS__, 'add_template_product_type'));
|
||||||
add_action('admin_footer', array(__CLASS__, 'templates_custom_js'));
|
|
||||||
add_filter('woocommerce_product_data_tabs', array(__CLASS__, 'custom_product_tabs'));
|
add_filter('woocommerce_product_data_tabs', array(__CLASS__, 'custom_product_tabs'));
|
||||||
add_action('woocommerce_product_data_panels', array(__CLASS__, 'wiaastemplate_product_tab_content_all'));
|
add_action('woocommerce_product_data_panels', array(__CLASS__, 'wiaastemplate_product_tab_content_all'));
|
||||||
add_action('woocommerce_admin_process_product_object', array(__CLASS__, 'save_wiaastemplate'));
|
add_action('woocommerce_admin_process_product_object', array(__CLASS__, 'save_wiaastemplate'));
|
||||||
@@ -35,7 +34,7 @@ class Wiaas_template {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add to product type drop down.
|
* Add template product type drop down.
|
||||||
*/
|
*/
|
||||||
function add_template_product_type($types) {
|
function add_template_product_type($types) {
|
||||||
|
|
||||||
@@ -48,27 +47,7 @@ class Wiaas_template {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show pricing fields for template product.
|
* Add template product, hardware, services, installation and software tabs product tab.
|
||||||
*/
|
|
||||||
function templates_custom_js() {
|
|
||||||
|
|
||||||
if ('product' != get_post_type()) :
|
|
||||||
return;
|
|
||||||
endif;
|
|
||||||
|
|
||||||
?>
|
|
||||||
<script type='text/javascript'>
|
|
||||||
jQuery(document).ready(function () {
|
|
||||||
jQuery('.options_group.pricing').addClass('show_if_simple_template').show();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script><?php
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a custom product tab.
|
|
||||||
*/
|
*/
|
||||||
function custom_product_tabs($tabs) {
|
function custom_product_tabs($tabs) {
|
||||||
|
|
||||||
@@ -100,6 +79,10 @@ class Wiaas_template {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add content do template tabs
|
||||||
|
*/
|
||||||
|
|
||||||
public static function wiaastemplate_product_tab_content_all() {
|
public static function wiaastemplate_product_tab_content_all() {
|
||||||
|
|
||||||
self::wiaastemplate_product_tab_content('hardware');
|
self::wiaastemplate_product_tab_content('hardware');
|
||||||
@@ -110,8 +93,11 @@ class Wiaas_template {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contents of the template options product tab.
|
* Html contents of the template options product tab.
|
||||||
|
*
|
||||||
|
* @param $options string main wiaas category
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static function wiaastemplate_product_tab_content($options) {
|
public static function wiaastemplate_product_tab_content($options) {
|
||||||
|
|
||||||
global $post;
|
global $post;
|
||||||
@@ -128,7 +114,7 @@ class Wiaas_template {
|
|||||||
|
|
||||||
foreach ($template_items as $item) {
|
foreach ($template_items as $item) {
|
||||||
|
|
||||||
$product_id = $item['template_category_id'];
|
$template_category_id = $item['template_category_id'];
|
||||||
$title = $item['template_category_title'];
|
$title = $item['template_category_title'];
|
||||||
$quantity = $item['quantity'];
|
$quantity = $item['quantity'];
|
||||||
|
|
||||||
@@ -142,7 +128,7 @@ class Wiaas_template {
|
|||||||
<select class="wiaas-term-search" id="wiaastemplate_products<?php echo '_' . $options ?>" style="width: 250px;"
|
<select class="wiaas-term-search" id="wiaastemplate_products<?php echo '_' . $options ?>" style="width: 250px;"
|
||||||
name="template_product"
|
name="template_product"
|
||||||
data-placeholder="<?php _e('Add product to template…', 'wiaas'); ?>"
|
data-placeholder="<?php _e('Add product to template…', 'wiaas'); ?>"
|
||||||
data-action="woocommerce_json_search_products" multiple="multiple" data-limit="500">
|
multiple="multiple" data-limit="500">
|
||||||
<option></option>
|
<option></option>
|
||||||
</select>
|
</select>
|
||||||
<?php echo wc_help_tip(__('Search for a product and add it to this template by clicking its name in the results list.', 'wiaas')); ?>
|
<?php echo wc_help_tip(__('Search for a product and add it to this template by clicking its name in the results list.', 'wiaas')); ?>
|
||||||
@@ -154,7 +140,7 @@ class Wiaas_template {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the custom fields.
|
* Save the template categories that are bind to template.
|
||||||
*/
|
*/
|
||||||
function save_wiaastemplate($post_id) {
|
function save_wiaastemplate($post_id) {
|
||||||
|
|
||||||
@@ -163,14 +149,21 @@ class Wiaas_template {
|
|||||||
$posted_template_data_installation = isset($_POST['template_data_installation']) ? $_POST['template_data_installation'] : false;
|
$posted_template_data_installation = isset($_POST['template_data_installation']) ? $_POST['template_data_installation'] : false;
|
||||||
$posted_template_data_software = isset($_POST['template_data_software']) ? $_POST['template_data_software'] : false;
|
$posted_template_data_software = isset($_POST['template_data_software']) ? $_POST['template_data_software'] : false;
|
||||||
|
|
||||||
self::save_template_product_meta($post_id, $posted_template_data_hardware, 'hardware');
|
self::process_and_save_template_product_meta($post_id, $posted_template_data_hardware, 'hardware');
|
||||||
self::save_template_product_meta($post_id, $posted_template_data_services, 'services');
|
self::process_and_save_template_product_meta($post_id, $posted_template_data_services, 'services');
|
||||||
self::save_template_product_meta($post_id, $posted_template_data_installation, 'installation');
|
self::process_and_save_template_product_meta($post_id, $posted_template_data_installation, 'installation');
|
||||||
self::save_template_product_meta($post_id, $posted_template_data_software, 'software');
|
self::process_and_save_template_product_meta($post_id, $posted_template_data_software, 'software');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function save_template_product_meta($post_id, $posted_template_data, $option) {
|
/**
|
||||||
|
* Get extract posted data and save them to meta
|
||||||
|
*
|
||||||
|
* @param $post_id integer id of the template
|
||||||
|
* @param $posted_template_data mixed
|
||||||
|
* @param $option string indicating main wiaas category
|
||||||
|
*/
|
||||||
|
public static function process_and_save_template_product_meta($post_id, $posted_template_data, $option) {
|
||||||
$processed_template_data = array();
|
$processed_template_data = array();
|
||||||
|
|
||||||
// Sort posted data by menu order.
|
// Sort posted data by menu order.
|
||||||
@@ -178,24 +171,24 @@ class Wiaas_template {
|
|||||||
|
|
||||||
foreach ($posted_template_data as $data) {
|
foreach ($posted_template_data as $data) {
|
||||||
|
|
||||||
$product_id = isset($data['product_id']) ? absint($data['product_id']) : false;
|
$template_category_id = isset($data['template_category_id']) ? absint($data['template_category_id']) : false;
|
||||||
$product_title = isset($data['product_title']) ? $data['product_title'] : false;
|
$template_category_title = isset($data['template_category_title']) ? $data['template_category_title'] : false;
|
||||||
$quantity = isset($data['quantity']) ? absint($data['quantity']) : false;
|
$quantity = isset($data['quantity']) ? absint($data['quantity']) : false;
|
||||||
|
|
||||||
|
|
||||||
$item_data = array(
|
$item_data = array(
|
||||||
|
|
||||||
'template_category_id' => $product_id,
|
'template_category_id' => $template_category_id,
|
||||||
'template_category_title' => trim($product_title),
|
'template_category_title' => trim($template_category_title),
|
||||||
'quantity' => $quantity
|
'quantity' => $quantity
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$processed_template_data[$product_id] = $item_data;
|
$processed_template_data[$template_category_id] = $item_data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update_post_meta($post_id, '_template_items_' . $option, $processed_template_data);
|
WC_Product_Template::save_template_product_meta($post_id, $option, $processed_template_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function menu_sort_order($a, $b) {
|
public static function menu_sort_order($a, $b) {
|
||||||
@@ -208,7 +201,7 @@ class Wiaas_template {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hide Attributes data panel.
|
* Hide default WC_Product data panels.
|
||||||
*/
|
*/
|
||||||
function hide_attributes_data_panel($tabs) {
|
function hide_attributes_data_panel($tabs) {
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ if (!defined('ABSPATH')) {
|
|||||||
?><input type="hidden" name="template_data_<?php echo $options?>[<?php echo $loop; ?>][item_id]" class="item_id" value="<?php echo $item_id; ?>" /><?php
|
?><input type="hidden" name="template_data_<?php echo $options?>[<?php echo $loop; ?>][item_id]" class="item_id" value="<?php echo $item_id; ?>" /><?php
|
||||||
}
|
}
|
||||||
|
|
||||||
?><input type="hidden" name="template_data_<?php echo $options?>[<?php echo $loop; ?>][product_title]" class="product_title" value="<?php echo $title; ?>" /><?php
|
?><input type="hidden" name="template_data_<?php echo $options?>[<?php echo $loop; ?>][template_category_title]" class="product_title" value="<?php echo $title; ?>" /><?php
|
||||||
?><input type="hidden" name="template_data_<?php echo $options?>[<?php echo $loop; ?>][product_id]" class="product_id" value="<?php echo $product_id; ?>" />
|
?><input type="hidden" name="template_data_<?php echo $options?>[<?php echo $loop; ?>][template_category_id]" class="product_id" value="<?php echo $template_category_id; ?>" />
|
||||||
|
|
||||||
</div><?php
|
</div><?php
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,108 @@ function construct_template_products_class() {
|
|||||||
return 'wiaastemplate';
|
return 'wiaastemplate';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get template categories from template product meta
|
||||||
|
*
|
||||||
|
* @param $template_id integer
|
||||||
|
* @param $template_category_slug string the name of the main wiaas category
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function get_template_categories_from_meta($template_id, $template_category_slug) {
|
||||||
|
|
||||||
|
return get_post_meta($template_id, $template_category_slug, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function extract_template_product_categories($category_meta) {
|
||||||
|
$category_objects = array();
|
||||||
|
|
||||||
|
|
||||||
|
if (empty($category_meta)) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($category_meta as $meta) {
|
||||||
|
|
||||||
|
if (!empty($meta)) {
|
||||||
|
|
||||||
|
|
||||||
|
$category_template_id = $meta['template_category_id'];
|
||||||
|
|
||||||
|
$template_category_object = new Wiaas_Template_Category_Object(
|
||||||
|
$category_template_id,
|
||||||
|
$meta['template_category_title'],
|
||||||
|
$meta['quantity']);
|
||||||
|
|
||||||
|
$category_objects[$category_template_id] = $template_category_object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return empty($category_objects) ? null : $category_objects;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get template categories from bundled products items
|
||||||
|
*
|
||||||
|
* @param $bundled_items array
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function extract_bundled_product_categories($bundled_items) {
|
||||||
|
|
||||||
|
$template_category_objects = array();
|
||||||
|
foreach ($bundled_items as $item_id => $item) {
|
||||||
|
$item_data = $item->get_data();
|
||||||
|
$post_terms = wp_get_object_terms($item->get_product_id(), 'template_category', array('fields' => 'id=>name'));
|
||||||
|
|
||||||
|
if (!empty($post_terms) && !is_wp_error($post_terms)) {
|
||||||
|
|
||||||
|
$cat = '';
|
||||||
|
$category_template_id = '';
|
||||||
|
|
||||||
|
foreach ($post_terms as $id => $term) {
|
||||||
|
$cat = $term;
|
||||||
|
$category_template_id = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$template_category_object = new Wiaas_Template_Category_Object(
|
||||||
|
$category_template_id,
|
||||||
|
$cat,
|
||||||
|
$item_data['quantity_max']);
|
||||||
|
$template_category_objects[$category_template_id] = $template_category_object;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $template_category_objects;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save selected template to bundled product meta
|
||||||
|
*
|
||||||
|
* @param $selected_template integer
|
||||||
|
* @param $post_id integer
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static function bind_selected_template_to_product($selected_template, $post_id) {
|
||||||
|
if (!empty($selected_template))
|
||||||
|
update_post_meta($post_id, '_select_template', esc_attr($selected_template));
|
||||||
|
else {
|
||||||
|
update_post_meta($post_id, '_select_template', '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save template categories to template product meta
|
||||||
|
*
|
||||||
|
* @param $post_id integer
|
||||||
|
* @param $option string a main wiaas category
|
||||||
|
* @param $processed_template_data array actual template category data
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static function save_template_product_meta($post_id, $option, $processed_template_data) {
|
||||||
|
|
||||||
|
update_post_meta($post_id, '_template_items_' . $option, $processed_template_data);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
class Wiaas_Templates_Test extends Wiaas_Unit_Test_Case {
|
||||||
|
|
||||||
|
var $template, $product, $package, $template_category, $template_meta;
|
||||||
|
|
||||||
|
public function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
# set admin as current user
|
||||||
|
wp_set_current_user(1);
|
||||||
|
|
||||||
|
$this->template_category = wp_create_term('Test', 'template_category');
|
||||||
|
$this->template_meta = array(
|
||||||
|
'template_category_id' => $this->template_category['term_id'],
|
||||||
|
'template_category_title' => 'Test',
|
||||||
|
'quantity' => 1
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->template = $this->create_new_wiaas_template();
|
||||||
|
$this->product = $this->create_new_product();
|
||||||
|
$this->package = $this->create_new_package();
|
||||||
|
$this->add_products_to_package($this->package, $this->product);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_template_category_taxonomy_created() {
|
||||||
|
$taxonomy = get_taxonomy('template_category');
|
||||||
|
|
||||||
|
$this->assertInstanceOf(WP_Taxonomy::class, $taxonomy);
|
||||||
|
|
||||||
|
$template_category_names = array_map(function ($term) {
|
||||||
|
return $term->name;
|
||||||
|
}, get_terms(array('taxonomy' => 'template_category', 'hide_empty' => false)));
|
||||||
|
|
||||||
|
$this->assertNotEmpty($template_category_names);
|
||||||
|
$this->assertContains('Test', $template_category_names);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_adding_template_category_to_template() {
|
||||||
|
|
||||||
|
WC_Product_Template::save_template_product_meta($this->template->get_id(), 'hardware', $this->template_meta);
|
||||||
|
|
||||||
|
$test_template_category = WC_Product_Template::get_template_categories_from_meta(
|
||||||
|
$this->template->get_id(), '_template_items_hardware');
|
||||||
|
|
||||||
|
$this->assertEquals($test_template_category['template_category_id'], $this->template_meta['template_category_id']);
|
||||||
|
$this->assertEquals($test_template_category['template_category_title'], $this->template_meta['template_category_title']);
|
||||||
|
$this->assertEquals($test_template_category['quantity'], $this->template_meta['quantity']);
|
||||||
|
}
|
||||||
|
|
||||||
|
function save_bind_package_to_template() {
|
||||||
|
WC_Product_Template::bind_selected_template_to_product($this->template->get_id(), $this->package->get_id());
|
||||||
|
$value = get_post_meta($this->package->get_id(), '_select_template', true);
|
||||||
|
|
||||||
|
$this->assertNotEmpty($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -88,6 +88,21 @@ class Wiaas_Unit_Test_Case extends WP_UnitTestCase {
|
|||||||
$package->sync(true);
|
$package->sync(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function create_new_wiaas_template() {
|
||||||
|
$post_id = wp_insert_post(array(
|
||||||
|
'post_type' => 'product',
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'post_name' => 'product',
|
||||||
|
'post_title' => 'Package',
|
||||||
|
'post_content' => 'Package',
|
||||||
|
'post_excerpt' => 'Package'
|
||||||
|
), true);
|
||||||
|
|
||||||
|
return new WC_Product_Template($post_id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function create_new_customer($login = 'customer_test', $organization_name = 'test-customer-organization') {
|
function create_new_customer($login = 'customer_test', $organization_name = 'test-customer-organization') {
|
||||||
$customer_id = wp_insert_user(array(
|
$customer_id = wp_insert_user(array(
|
||||||
'user_login' => $login,
|
'user_login' => $login,
|
||||||
|
|||||||
Reference in New Issue
Block a user