266 lines
9.0 KiB
JavaScript
266 lines
9.0 KiB
JavaScript
jQuery(function ($) {
|
|
|
|
var $template_categories_container_hardware = $('.wiaas-template-items_hardware'),
|
|
$template_categories_container_software = $('.wiaas-template-items_software'),
|
|
$template_categories_container_services = $('.wiaas-template-items_services'),
|
|
$template_categories_container_isntallation = $('.wiaas-template-items_installation'),
|
|
|
|
$template_categories = $('.wc-bundled-item',
|
|
$template_categories_container_services,
|
|
$template_categories_container_software,
|
|
$template_categories_container_hardware,
|
|
$template_categories_container_isntallation),
|
|
|
|
$template_search_hardware = $('#wiaastemplate_products_hardware'),
|
|
$template_search_software = $('#wiaastemplate_products_software'),
|
|
$template_search_services = $('#wiaastemplate_products_services'),
|
|
$template_search_installation = $('#wiaastemplate_products_installation'),
|
|
template_category_objects = {},
|
|
template_category_add_count = $template_categories.length;
|
|
|
|
|
|
|
|
init_event_handlers();
|
|
|
|
function init_event_handlers() {
|
|
|
|
|
|
$template_search_hardware
|
|
|
|
.on('change', function () {
|
|
addSearchedTemplateCategory('hardware', $template_search_hardware, $template_categories_container_hardware)
|
|
});
|
|
|
|
$template_search_software
|
|
|
|
.on('change', function () {
|
|
addSearchedTemplateCategory('software', $template_search_software, $template_categories_container_software)
|
|
});
|
|
|
|
|
|
$template_search_installation
|
|
|
|
.on('change', function () {
|
|
addSearchedTemplateCategory('installation', $template_search_installation, $template_categories_container_isntallation)
|
|
});
|
|
|
|
|
|
$template_search_services
|
|
|
|
.on('change', function () {
|
|
addSearchedTemplateCategory('services', $template_search_services, $template_categories_container_services)
|
|
});
|
|
|
|
|
|
function addSearchedTemplateCategory(options, search, container) {
|
|
var template_category_ids = search.val(),
|
|
template_category_id = template_category_ids && template_category_ids.length > 0 ? template_category_ids.shift() : false;
|
|
|
|
var template_category_title =search.text();
|
|
|
|
if (!template_category_id) {
|
|
return false;
|
|
}
|
|
|
|
search.val([]).change();
|
|
|
|
template_category_add_count++;
|
|
|
|
var data = {
|
|
action: 'wiaas_add_template_product',
|
|
post_id: woocommerce_admin_meta_boxes.post_id,
|
|
id: template_category_add_count,
|
|
title: template_category_title,
|
|
template_category_id: template_category_id,
|
|
security: wc_bundles_admin_params.add_bundled_product_nonce,
|
|
options: options,
|
|
};
|
|
|
|
setTimeout(function () {
|
|
|
|
$.post(woocommerce_admin_meta_boxes.ajax_url, data, function (response) {
|
|
|
|
if ('' !== response.markup) {
|
|
|
|
container.append(response.markup);
|
|
|
|
var $added = $('.wiaas-template-item', container).last(),
|
|
added_id = 'bundled_item_' + template_category_add_count;
|
|
|
|
$added.data('bundled_item_id', added_id);
|
|
$added.wc_bundles_select2();
|
|
|
|
} else if (response.message !== '') {
|
|
window.alert(response.message);
|
|
}
|
|
|
|
// Open and close to resolve "sticky" modal issue.
|
|
if ('yes' === wc_bundles_admin_params.is_wc_version_gte_3_2) {
|
|
search.selectWoo('open');
|
|
search.selectWoo('close');
|
|
} else {
|
|
search.select2('open');
|
|
search.select2('close');
|
|
}
|
|
search.text('');
|
|
|
|
});
|
|
|
|
}, 250);
|
|
|
|
return false;
|
|
}
|
|
|
|
$template_categories_container_isntallation
|
|
|
|
// Remove Item.
|
|
.on('click', 'a.remove_row', function (e) {
|
|
|
|
var $el = $(this).closest('.wc-bundled-item'),
|
|
el_id = $el.data('bundled_item_id');
|
|
|
|
$el.find('*').off();
|
|
$el.remove();
|
|
|
|
delete template_category_objects[el_id];
|
|
|
|
e.preventDefault();
|
|
|
|
});
|
|
|
|
$template_categories_container_hardware
|
|
|
|
// Remove Item.
|
|
.on('click', 'a.remove_row', function (e) {
|
|
|
|
var $el = $(this).closest('.wc-bundled-item'),
|
|
el_id = $el.data('bundled_item_id');
|
|
|
|
$el.find('*').off();
|
|
$el.remove();
|
|
|
|
delete template_category_objects[el_id];
|
|
|
|
e.preventDefault();
|
|
|
|
});
|
|
|
|
$template_categories_container_software
|
|
|
|
// Remove Item.
|
|
.on('click', 'a.remove_row', function (e) {
|
|
|
|
var $el = $(this).closest('.wc-bundled-item'),
|
|
el_id = $el.data('bundled_item_id');
|
|
|
|
$el.find('*').off();
|
|
$el.remove();
|
|
|
|
delete template_category_objects[el_id];
|
|
|
|
e.preventDefault();
|
|
|
|
});
|
|
|
|
$template_categories_container_services
|
|
|
|
// Remove Item.
|
|
.on('click', 'a.remove_row', function (e) {
|
|
|
|
var $el = $(this).closest('.wc-bundled-item'),
|
|
el_id = $el.data('bundled_item_id');
|
|
|
|
$el.find('*').off();
|
|
$el.remove();
|
|
|
|
delete template_category_objects[el_id];
|
|
|
|
e.preventDefault();
|
|
|
|
})
|
|
|
|
}
|
|
|
|
// Ajax product search box
|
|
$( ':input.wiaas-term-search' ).filter( ':not(.enhanced)' ).each( function() {
|
|
var select2_args = {
|
|
allowClear: $( this ).data( 'allow_clear' ) ? true : false,
|
|
placeholder: $( this ).data( 'placeholder' ),
|
|
minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3',
|
|
escapeMarkup: function( m ) {
|
|
return m;
|
|
},
|
|
ajax: {
|
|
url: wc_enhanced_select_params.ajax_url,
|
|
dataType: 'json',
|
|
delay: 250,
|
|
data: function( params ) {
|
|
return {
|
|
term: params.term,
|
|
action: 'wiaas_template_category_search',
|
|
security: wc_enhanced_select_params.search_products_nonce,
|
|
exclude: $( this ).data( 'exclude' ),
|
|
include: $( this ).data( 'include' ),
|
|
limit: $( this ).data( 'limit' )
|
|
};
|
|
},
|
|
processResults: function( data ) {
|
|
var terms = [];
|
|
if ( data ) {
|
|
$.each( data, function( id, text ) {
|
|
terms.push( { id: id, text: text } );
|
|
});
|
|
}
|
|
return {
|
|
results: terms
|
|
};
|
|
},
|
|
cache: true
|
|
}
|
|
};
|
|
|
|
// select2_args = $.extend( select2_args, getEnhancedSelectFormatString() );
|
|
|
|
$( this ).selectWoo( select2_args ).addClass( 'enhanced' );
|
|
|
|
if ( $( this ).data( 'sortable' ) ) {
|
|
var $select = $(this);
|
|
var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' );
|
|
|
|
$list.sortable({
|
|
placeholder : 'ui-state-highlight select2-selection__choice',
|
|
forcePlaceholderSize: true,
|
|
items : 'li:not(.select2-search__field)',
|
|
tolerance : 'pointer',
|
|
stop: function() {
|
|
$( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function() {
|
|
var id = $( this ).data( 'data' ).id;
|
|
var option = $select.find( 'option[value="' + id + '"]' )[0];
|
|
$select.prepend( option );
|
|
} );
|
|
}
|
|
});
|
|
// Keep multiselects ordered alphabetically if they are not sortable.
|
|
} else if ( $( this ).prop( 'multiple' ) ) {
|
|
$( this ).on( 'change', function(){
|
|
var $children = $( this ).children();
|
|
$children.sort(function(a, b){
|
|
var atext = a.text.toLowerCase();
|
|
var btext = b.text.toLowerCase();
|
|
|
|
if ( atext > btext ) {
|
|
return 1;
|
|
}
|
|
if ( atext < btext ) {
|
|
return -1;
|
|
}
|
|
return 0;
|
|
});
|
|
$( this ).html( $children );
|
|
});
|
|
}
|
|
});
|
|
|
|
});
|
|
|