Version Description
- Improvement: date & time fields
Download this release
Release Info
Developer | quadlayers |
Plugin | WooCommerce Checkout Manager |
Version | 4.7.3 |
Comparing to | |
See all releases |
Code changes from version 4.7.2 to 4.7.3
- assets/backend/js/wooccm-admin-field.js +4 -1
- assets/backend/js/wooccm-admin-field.min.js +1 -1
- assets/backend/js/wooccm-admin.js +2 -22
- assets/backend/js/wooccm-admin.min.js +1 -1
- assets/frontend/js/wooccm-checkout.js +7 -7
- includes/class-wooccm.php +7 -4
- includes/controller/class-wooccm-checkout.php +5 -2
- includes/controller/class-wooccm-email.php +93 -0
- includes/model/class-wooccm-field.php +5 -1
- includes/view/backend/pages/email.php +7 -0
- includes/view/backend/pages/modals/modal-field.php +7 -4
- includes/view/backend/pages/modals/parts/field-tabs.php +8 -8
- includes/view/backend/pages/modals/parts/panel-datepicker.php +13 -6
- includes/view/backend/pages/modals/parts/panel-display.php +8 -2
- includes/view/backend/pages/modals/parts/panel-suggestions.php +0 -63
- includes/view/backend/pages/modals/parts/panel-timepicker.php +5 -2
- readme.txt +4 -1
- templates/order/order-custom-fields.php +0 -2
- woocommerce-checkout-manager.php +2 -2
assets/backend/js/wooccm-admin-field.js
CHANGED
@@ -60,6 +60,7 @@
|
|
60 |
|
61 |
_.delay(function () {
|
62 |
|
|
|
63 |
modal.$el.trigger('wooccm-enhanced-options');
|
64 |
modal.$el.trigger('wooccm-enhanced-select');
|
65 |
modal.$el.trigger('wooccm-tab-panels', tab);
|
@@ -175,6 +176,7 @@
|
|
175 |
|
176 |
this.update(e);
|
177 |
this.render();
|
|
|
178 |
|
179 |
},
|
180 |
// table: function (e) {
|
@@ -296,12 +298,13 @@
|
|
296 |
if (response.success) {
|
297 |
|
298 |
if (modal.model.attributes.id == undefined) {
|
|
|
299 |
modal.close(e);
|
300 |
}
|
301 |
|
302 |
//re-render dont load select2 saved options
|
303 |
modal.model.set(response.data);
|
304 |
-
|
305 |
|
306 |
} else {
|
307 |
alert(response.data);
|
60 |
|
61 |
_.delay(function () {
|
62 |
|
63 |
+
modal.$el.trigger('wooccm-enhanced-between-dates');
|
64 |
modal.$el.trigger('wooccm-enhanced-options');
|
65 |
modal.$el.trigger('wooccm-enhanced-select');
|
66 |
modal.$el.trigger('wooccm-tab-panels', tab);
|
176 |
|
177 |
this.update(e);
|
178 |
this.render();
|
179 |
+
this.enable();
|
180 |
|
181 |
},
|
182 |
// table: function (e) {
|
298 |
if (response.success) {
|
299 |
|
300 |
if (modal.model.attributes.id == undefined) {
|
301 |
+
$modal.addClass('reload');
|
302 |
modal.close(e);
|
303 |
}
|
304 |
|
305 |
//re-render dont load select2 saved options
|
306 |
modal.model.set(response.data);
|
307 |
+
//$modal.addClass('reload');
|
308 |
|
309 |
} else {
|
310 |
alert(response.data);
|
assets/backend/js/wooccm-admin-field.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
(function(e){var g=0,b;var d=function(j){return j.is(".processing")||j.parents(".processing").length};var c=function(j){if(!d(j)){j.addClass("processing").block({message:null,overlayCSS:{background:"#fff",opacity:0.6}})}};var f=function(j){j.removeClass("processing").unblock()};var h=Backbone.Model.extend({defaults:wooccm_field.args});var i=Backbone.View.extend({events:{"change input":"enable","change textarea":"enable","change select":"enable","click .media-modal-backdrop":"close","click .media-modal-close":"close","click .media-modal-prev":"edit","click .media-modal-next":"edit","change .media-modal-change":"change","change .media-modal-parent":"parent","submit .media-modal-form":"submit",},templates:{},initialize:function(){_.bindAll(this,"open","edit","parent","change","load","render","close","submit");this.init();this.open()},init:function(){this.templates.window=wp.template("wooccm-modal-window")},render:function(){var k=this;var j=this.$el.find("ul.wc-tabs li.active a").attr("href");k.$el.html(k.templates.window(k.model.attributes));_.delay(function(){k.$el.trigger("wooccm-enhanced-options");k.$el.trigger("wooccm-enhanced-select");k.$el.trigger("wooccm-tab-panels",j);k.$el.trigger("init_tooltips")},100)},load:function(){var j=this;if(j.model.attributes.id==undefined){j.render();return}e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_load_field",nonce:wooccm_field.nonce,field_id:this.model.attributes.id},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(){alert("Error!")},success:function(k){if(k.success){j.model.set(k.data);j.render()}else{alert(k.data)}}})},edit:function(n){n.preventDefault();var l=this,m=e(n.target),k=parseInt(e(".wc_gateways tr[data-field_id]").length),j=parseInt(l.model.get("order"));g++;if(b){clearTimeout(b)}b=setTimeout(function(){if(m.hasClass("media-modal-next")){j=Math.min(j+g,k)}else{j=Math.max(j-g,1)}l.model.set({id:parseInt(e(".wc_gateways tr[data-field_order="+j+"]").data("field_id"))});g=0;l.load()},300)},open:function(j){this.load();e("body").addClass("modal-open").append(this.$el)},update:function(m){m.preventDefault();var k=e(m.target),j=k.attr("name"),l=k.val();if(m.target.type==="checkbox"){l=k.prop("checked")===true?1:0}this.model.attributes[j]=l;this.model.changed[j]=l},change:function(j){j.preventDefault();this.update(j);this.render()},close:function(j){j.preventDefault();this.undelegateEvents();e(document).off("focusin");e("body").removeClass("modal-open");this.remove()},parent:function(m){m.preventDefault();var l=this,k=l.$el.find("#wooccm_modal"),j=k.find(".attachment-details");this.update(m);e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_load_parent",nonce:wooccm_field.nonce,conditional_parent_key:l.model.attributes.conditional_parent_key},dataType:"json",type:"POST",beforeSend:function(){e(".media-modal-submit").attr("disabled",true);j.addClass("save-waiting")},complete:function(){j.addClass("save-complete");j.removeClass("save-waiting")},error:function(){alert("Error!")},success:function(n){if(n.success){l.model.attributes.parent=n.data;l.model.changed.parent=n.data;l.render()}else{alert(n.data)}}});return false},reload:function(j){if(this.$el.find("#wooccm_modal").hasClass("reload")){location.reload();return}this.remove();return},close:function(j){j.preventDefault();this.undelegateEvents();e(document).off("focusin");e("body").removeClass("modal-open");this.reload(j);return},enable:function(j){e(".media-modal-submit").removeProp("disabled")},submit:function(m){m.preventDefault();var l=this,k=l.$el.find("#wooccm_modal"),j=k.find(".attachment-details");e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_save_field",nonce:wooccm_field.nonce,field_id:l.model.attributes.id,field_data:e("form",this.$el).serialize()},dataType:"json",type:"POST",beforeSend:function(){e(".media-modal-submit").prop("disabled",true);j.addClass("save-waiting");c(k)},complete:function(){j.addClass("save-complete");j.removeClass("save-waiting");f(k)},error:function(){alert("Error!")},success:function(n){if(n.success){if(l.model.attributes.id==undefined){l.close(m)}l.model.set(n.data)
|
1 |
+
(function(e){var g=0,b;var d=function(j){return j.is(".processing")||j.parents(".processing").length};var c=function(j){if(!d(j)){j.addClass("processing").block({message:null,overlayCSS:{background:"#fff",opacity:0.6}})}};var f=function(j){j.removeClass("processing").unblock()};var h=Backbone.Model.extend({defaults:wooccm_field.args});var i=Backbone.View.extend({events:{"change input":"enable","change textarea":"enable","change select":"enable","click .media-modal-backdrop":"close","click .media-modal-close":"close","click .media-modal-prev":"edit","click .media-modal-next":"edit","change .media-modal-change":"change","change .media-modal-parent":"parent","submit .media-modal-form":"submit",},templates:{},initialize:function(){_.bindAll(this,"open","edit","parent","change","load","render","close","submit");this.init();this.open()},init:function(){this.templates.window=wp.template("wooccm-modal-window")},render:function(){var k=this;var j=this.$el.find("ul.wc-tabs li.active a").attr("href");k.$el.html(k.templates.window(k.model.attributes));_.delay(function(){k.$el.trigger("wooccm-enhanced-between-dates");k.$el.trigger("wooccm-enhanced-options");k.$el.trigger("wooccm-enhanced-select");k.$el.trigger("wooccm-tab-panels",j);k.$el.trigger("init_tooltips")},100)},load:function(){var j=this;if(j.model.attributes.id==undefined){j.render();return}e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_load_field",nonce:wooccm_field.nonce,field_id:this.model.attributes.id},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(){alert("Error!")},success:function(k){if(k.success){j.model.set(k.data);j.render()}else{alert(k.data)}}})},edit:function(n){n.preventDefault();var l=this,m=e(n.target),k=parseInt(e(".wc_gateways tr[data-field_id]").length),j=parseInt(l.model.get("order"));g++;if(b){clearTimeout(b)}b=setTimeout(function(){if(m.hasClass("media-modal-next")){j=Math.min(j+g,k)}else{j=Math.max(j-g,1)}l.model.set({id:parseInt(e(".wc_gateways tr[data-field_order="+j+"]").data("field_id"))});g=0;l.load()},300)},open:function(j){this.load();e("body").addClass("modal-open").append(this.$el)},update:function(m){m.preventDefault();var k=e(m.target),j=k.attr("name"),l=k.val();if(m.target.type==="checkbox"){l=k.prop("checked")===true?1:0}this.model.attributes[j]=l;this.model.changed[j]=l},change:function(j){j.preventDefault();this.update(j);this.render();this.enable()},close:function(j){j.preventDefault();this.undelegateEvents();e(document).off("focusin");e("body").removeClass("modal-open");this.remove()},parent:function(m){m.preventDefault();var l=this,k=l.$el.find("#wooccm_modal"),j=k.find(".attachment-details");this.update(m);e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_load_parent",nonce:wooccm_field.nonce,conditional_parent_key:l.model.attributes.conditional_parent_key},dataType:"json",type:"POST",beforeSend:function(){e(".media-modal-submit").attr("disabled",true);j.addClass("save-waiting")},complete:function(){j.addClass("save-complete");j.removeClass("save-waiting")},error:function(){alert("Error!")},success:function(n){if(n.success){l.model.attributes.parent=n.data;l.model.changed.parent=n.data;l.render()}else{alert(n.data)}}});return false},reload:function(j){if(this.$el.find("#wooccm_modal").hasClass("reload")){location.reload();return}this.remove();return},close:function(j){j.preventDefault();this.undelegateEvents();e(document).off("focusin");e("body").removeClass("modal-open");this.reload(j);return},enable:function(j){e(".media-modal-submit").removeProp("disabled")},submit:function(m){m.preventDefault();var l=this,k=l.$el.find("#wooccm_modal"),j=k.find(".attachment-details");e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_save_field",nonce:wooccm_field.nonce,field_id:l.model.attributes.id,field_data:e("form",this.$el).serialize()},dataType:"json",type:"POST",beforeSend:function(){e(".media-modal-submit").prop("disabled",true);j.addClass("save-waiting");c(k)},complete:function(){j.addClass("save-complete");j.removeClass("save-waiting");f(k)},error:function(){alert("Error!")},success:function(n){if(n.success){if(l.model.attributes.id==undefined){k.addClass("reload");l.close(m)}l.model.set(n.data)}else{alert(n.data)}}});return false}});var a=Backbone.View.extend({initialize:function(m){var l=e(m.target),k=l.closest("[data-field_id]").data("field_id");var j=new h();j.set({id:k});new i({model:j})},});e("#wooccm_billing_settings_add, #wooccm_shipping_settings_add, #wooccm_additional_settings_add").on("click",function(j){j.preventDefault();new a(j)});e("#wooccm_billing_settings_reset, #wooccm_shipping_settings_reset, #wooccm_additional_settings_reset").on("click",function(k){k.preventDefault();var j=e(k.target);var l=confirm(wooccm_field.message.reset);if(!l){return false}e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_reset_fields",nonce:wooccm_field.nonce},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(){alert("Error!")},success:function(m){if(m.success){location.reload()}else{alert(m.data)}}});return false});e(".wooccm_billing_settings_edit, .wooccm_shipping_settings_edit, .wooccm_additional_settings_edit").on("click",function(j){j.preventDefault();new a(j)});e(".wooccm_billing_settings_delete, .wooccm_shipping_settings_delete, .wooccm_additional_settings_delete").on("click",function(m){m.preventDefault();var l=e(m.target),k=l.closest("[data-field_id]"),j=k.data("field_id");var n=confirm(wooccm_field.message.remove);if(!n){return false}e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_delete_field",nonce:wooccm_field.nonce,field_id:j,},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(){alert("Error!")},success:function(o){if(o.success){k.remove()}else{alert(o.data)}}});return false});e(document).on("click",".wooccm-field-toggle-attribute",function(m){m.preventDefault();var j=e(this),l=j.closest("tr"),k=j.find(".woocommerce-input-toggle");e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_toggle_field_attribute",nonce:wooccm_field.nonce,field_attr:e(this).data("field_attr"),field_id:l.data("field_id")},dataType:"json",type:"POST",beforeSend:function(n){k.addClass("woocommerce-input-toggle--loading")},success:function(n){if(true===n.data){k.removeClass("woocommerce-input-toggle--enabled, woocommerce-input-toggle--disabled");k.addClass("woocommerce-input-toggle--enabled");k.removeClass("woocommerce-input-toggle--loading")}else{if(true!==n.data){k.removeClass("woocommerce-input-toggle--enabled, woocommerce-input-toggle--disabled");k.addClass("woocommerce-input-toggle--disabled");k.removeClass("woocommerce-input-toggle--loading")}}}});return false});e(document).on("change",".wooccm-field-change-attribute",function(l){l.preventDefault();var j=e(this),k=j.closest("tr");e.ajax({url:wooccm_field.ajax_url,data:{action:"wooccm_change_field_attribute",nonce:wooccm_field.nonce,field_attr:j.data("field_attr"),field_value:j.val(),field_id:k.data("field_id"),},dataType:"json",type:"POST",beforeSend:function(m){j.prop("disabled",true)},success:function(m){console.log(m.data)},complete:function(m){j.prop("disabled",false)},});return false})})(jQuery);
|
assets/backend/js/wooccm-admin.js
CHANGED
@@ -1,26 +1,6 @@
|
|
1 |
(function ($) {
|
2 |
|
3 |
-
|
4 |
-
var o = {};
|
5 |
-
var a = this.serializeArray();
|
6 |
-
$.each(a, function () {
|
7 |
-
if (o[this.name] !== undefined) {
|
8 |
-
if (!o[this.name].push) {
|
9 |
-
o[this.name] = [o[this.name]];
|
10 |
-
}
|
11 |
-
o[this.name].push(this.value || '');
|
12 |
-
} else {
|
13 |
-
o[this.name] = this.value || '';
|
14 |
-
}
|
15 |
-
});
|
16 |
-
var $radio = $('input[type=radio],input[type=checkbox]', this);
|
17 |
-
$.each($radio, function () {
|
18 |
-
if (!o.hasOwnProperty(this.name)) {
|
19 |
-
o[this.name] = '';
|
20 |
-
}
|
21 |
-
});
|
22 |
-
return o;
|
23 |
-
};
|
24 |
|
25 |
function date_picker_select(datepicker) {
|
26 |
var option = $(datepicker).next().is('.hasDatepicker') ? 'minDate' : 'maxDate',
|
@@ -261,7 +241,7 @@
|
|
261 |
});
|
262 |
|
263 |
$('.wooccm-enhanced-search').filter(':not(.enhanced)').each(function () {
|
264 |
-
|
265 |
var select2_args = {
|
266 |
allowClear: $(this).data('allow_clear') ? true : false,
|
267 |
placeholder: $(this).data('placeholder'),
|
1 |
(function ($) {
|
2 |
|
3 |
+
$('.wooccm-premium-field').closest('tr').addClass('wooccm-premium');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
function date_picker_select(datepicker) {
|
6 |
var option = $(datepicker).next().is('.hasDatepicker') ? 'minDate' : 'maxDate',
|
241 |
});
|
242 |
|
243 |
$('.wooccm-enhanced-search').filter(':not(.enhanced)').each(function () {
|
244 |
+
|
245 |
var select2_args = {
|
246 |
allowClear: $(this).data('allow_clear') ? true : false,
|
247 |
placeholder: $(this).data('placeholder'),
|
assets/backend/js/wooccm-admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
(function(b){b
|
1 |
+
(function(b){b(".wooccm-premium-field").closest("tr").addClass("wooccm-premium");function c(f){var e=b(f).next().is(".hasDatepicker")?"minDate":"maxDate",g="minDate"===e?b(f).next():b(f).prev(),d=b(f).datepicker("getDate");b(g).datepicker("option",e,d);b(f).change()}function a(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_searching},inputTooLong:function(d){var e=d.input.length-d.maximum;if(1===e){return wc_enhanced_select_params.i18n_input_too_long_1}return wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",e)},inputTooShort:function(d){var e=d.minimum-d.input.length;if(1===e){return wc_enhanced_select_params.i18n_input_too_short_1}return wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",e)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(d){if(d.maximum===1){return wc_enhanced_select_params.i18n_selection_too_long_1}return wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",d.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}b(document).on("wooccm-tab-panels",function(i,h){var g=b(i.target),f=g.find("ul.wc-tabs"),d=f.find('a[href="'+h+'"]');f.show();f.find("a").click(function(k){k.preventDefault();var j=b(this).closest("div.panel-wrap");f.find("li",j).removeClass("active");b(this).parent().addClass("active");b("div.panel",j).hide();b(b(this).attr("href")).show()});if(d.length&&b(d.attr("href")).length){d.click()}else{f.find("li.active").find("a").click()}});b(document).on("wooccm-enhanced-between-dates",function(d){b(".wooccm-enhanced-between-dates").filter(":not(.enhanced)").each(function(){b(this).find("input").datepicker({defaultDate:"",dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:true,onSelect:function(){c(b(this))}});b(this).find("input").each(function(){c(b(this))})})});b(document).on("wooccm-enhanced-options",function(d){b(".wooccm-enhanced-options").each(function(){var f=b(this),g=f.find(".add-option"),e=f.find(".remove-options");g.on("click",function(j){var h=f.find("tbody > tr"),k=h.length,i=h.first().clone().html().replace(/options\[([0-9]+)\]/g,"options["+k+"]").replace('disabled="disabled"',"").replace('checked="checked"',"").replace('<input value="0"','<input value="'+k+'"');h.last().after(b('<tr class="row">'+i+"</tr>"));e.removeProp("disabled")});e.on("click",function(i){f.find("tr > td.check-column input:checked").closest("tr").remove();var h=f.find("tbody > tr");if(h.length<2){b(this).prop("disabled",true)}})})});b(document).on("wooccm-enhanced-select",function(d){b(".wooccm-enhanced-select").filter(":not(.enhanced)").each(function(){var e=b.extend({minimumResultsForSearch:10,allowClear:b(this).data("allow_clear")?true:false,placeholder:b(this).data("placeholder")},a());b(this).selectWoo(e).addClass("enhanced")});b(".wooccm-product-search").filter(":not(.enhanced)").each(function(){var g={allowClear:b(this).data("allow_clear")?true:false,placeholder:b(this).data("placeholder"),minimumInputLength:b(this).data("minimum_input_length")?b(this).data("minimum_input_length"):"3",escapeMarkup:function(h){return h},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",delay:250,data:function(h){return{term:h.term,action:b(this).data("action")||"wooccm_select_search_products",security:wc_enhanced_select_params.search_products_nonce,selected:b(this).select2("val")||0,exclude:b(this).data("exclude"),include:b(this).data("include"),limit:b(this).data("limit"),display_stock:b(this).data("display_stock")}},processResults:function(i){var h=[];if(i){b.each(i,function(k,j){h.push({id:k,text:j})})}return{results:h}},cache:true}};g=b.extend(g,a());b(this).selectWoo(g).addClass("enhanced");if(b(this).data("sortable")){var f=b(this);var e=b(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:true,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){b(e.find(".select2-selection__choice").get().reverse()).each(function(){var i=b(this).data("data").id;var h=f.find('option[value="'+i+'"]')[0];f.prepend(h)})}})}else{if(b(this).prop("multiple")){b(this).on("change",function(){var h=b(this).children();h.sort(function(j,i){var l=j.text.toLowerCase();var k=i.text.toLowerCase();if(l>k){return 1}if(l<k){return -1}return 0});b(this).html(h)})}}})});b(".wooccm-enhanced-search").filter(":not(.enhanced)").each(function(){var d={allowClear:b(this).data("allow_clear")?true:false,placeholder:b(this).data("placeholder"),minimumInputLength:b(this).data("minimum_input_length")||"3",escapeMarkup:function(e){return e},ajax:{url:wooccm_admin.ajax_url,dataType:"json",cache:true,delay:250,data:function(e){return{term:e.term,key:b(this).data("key"),action:"wooccm_search_field",nonce:wooccm_admin.nonce,}},processResults:function(f,g){var e=[];if(f){b.each(f,function(i,h){e.push({id:i,text:h})})}return{results:e}}}};d=b.extend(d,a());b(this).select2(d).addClass("enhanced")})})(jQuery);
|
assets/frontend/js/wooccm-checkout.js
CHANGED
@@ -341,12 +341,11 @@
|
|
341 |
// Datepicker fields
|
342 |
// ---------------------------------------------------------------------------
|
343 |
|
344 |
-
$('.wooccm-
|
345 |
|
346 |
-
var $
|
347 |
-
$input = $field.find('input[type=text]');
|
348 |
-
if ($.isFunction($.fn.datepicker)) {
|
349 |
|
|
|
350 |
$input.datepicker({
|
351 |
dateFormat: $input.data('formatdate') || 'dd-mm-yy',
|
352 |
minDate: $input.data('mindate') || undefined,
|
@@ -367,12 +366,13 @@
|
|
367 |
// Timepicker fields
|
368 |
// ---------------------------------------------------------------------------
|
369 |
|
370 |
-
$('.wooccm-
|
|
|
|
|
371 |
|
372 |
-
var $field = $(field),
|
373 |
-
$input = $field.find('input[type=text]');
|
374 |
if ($.isFunction($.fn.timepicker)) {
|
375 |
$input.timepicker({
|
|
|
376 |
showPeriod: true,
|
377 |
showLeadingZero: true,
|
378 |
hours: $input.data('hours') || undefined,
|
341 |
// Datepicker fields
|
342 |
// ---------------------------------------------------------------------------
|
343 |
|
344 |
+
$('.wooccm-enhanced-datepicker').each(function (i, field) {
|
345 |
|
346 |
+
var $input = $(this);
|
|
|
|
|
347 |
|
348 |
+
if ($.isFunction($.fn.datepicker)) {
|
349 |
$input.datepicker({
|
350 |
dateFormat: $input.data('formatdate') || 'dd-mm-yy',
|
351 |
minDate: $input.data('mindate') || undefined,
|
366 |
// Timepicker fields
|
367 |
// ---------------------------------------------------------------------------
|
368 |
|
369 |
+
$('.wooccm-enhanced-timepicker').each(function (i, field) {
|
370 |
+
|
371 |
+
var $input = $(this);
|
372 |
|
|
|
|
|
373 |
if ($.isFunction($.fn.timepicker)) {
|
374 |
$input.timepicker({
|
375 |
+
//timeFormat: 'HH:mm:ss',
|
376 |
showPeriod: true,
|
377 |
showLeadingZero: true,
|
378 |
hours: $input.data('hours') || undefined,
|
includes/class-wooccm.php
CHANGED
@@ -41,12 +41,15 @@ final class WOOCCM {
|
|
41 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-checkout.php' );
|
42 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-field.php' );
|
43 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-order.php' );
|
|
|
44 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-advanced.php' );
|
45 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-premium.php' );
|
46 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-suggestions.php' );
|
47 |
}
|
48 |
|
49 |
public function register_scripts() {
|
|
|
|
|
50 |
|
51 |
// Frontend
|
52 |
// -----------------------------------------------------------------------
|
@@ -85,13 +88,13 @@ final class WOOCCM {
|
|
85 |
// Timepicker
|
86 |
// ---------------------------------------------------------------------
|
87 |
wp_register_style('jquery-ui-timepicker', plugins_url('assets/frontend/timepicker/jquery.ui.timepicker.css', WOOCCM_PLUGIN_FILE), false, WOOCCM_PLUGIN_VERSION);
|
88 |
-
wp_register_script('jquery-ui-timepicker', plugins_url('assets/frontend/timepicker/jquery.ui.timepicker.js', WOOCCM_PLUGIN_FILE), array('jquery'), WOOCCM_PLUGIN_VERSION);
|
89 |
|
90 |
// Colorpicker
|
91 |
// ---------------------------------------------------------------------
|
92 |
-
wp_register_script('iris', admin_url('js/iris.min.js'), array('jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch'),
|
93 |
|
94 |
-
wp_register_script('wp-color-picker', admin_url('js/color-picker.min.js'), array('iris'),
|
95 |
|
96 |
wp_localize_script('wp-color-picker', 'wpColorPickerL10n', array(
|
97 |
'clear' => __('Clear'),
|
@@ -100,7 +103,7 @@ final class WOOCCM {
|
|
100 |
'current' => __('Current Color'),
|
101 |
));
|
102 |
|
103 |
-
wp_register_script('farbtastic', admin_url('js/farbtastic.js'), array('jquery'),
|
104 |
|
105 |
// Admin
|
106 |
// -------------------------------------------------------------------------
|
41 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-checkout.php' );
|
42 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-field.php' );
|
43 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-order.php' );
|
44 |
+
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-email.php' );
|
45 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-advanced.php' );
|
46 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-premium.php' );
|
47 |
include_once( WOOCCM_PLUGIN_DIR . 'includes/controller/class-wooccm-suggestions.php' );
|
48 |
}
|
49 |
|
50 |
public function register_scripts() {
|
51 |
+
|
52 |
+
global $wp_version;
|
53 |
|
54 |
// Frontend
|
55 |
// -----------------------------------------------------------------------
|
88 |
// Timepicker
|
89 |
// ---------------------------------------------------------------------
|
90 |
wp_register_style('jquery-ui-timepicker', plugins_url('assets/frontend/timepicker/jquery.ui.timepicker.css', WOOCCM_PLUGIN_FILE), false, WOOCCM_PLUGIN_VERSION);
|
91 |
+
wp_register_script('jquery-ui-timepicker', plugins_url('assets/frontend/timepicker/jquery.ui.timepicker.js', WOOCCM_PLUGIN_FILE), array('jquery'), WOOCCM_PLUGIN_VERSION, true);
|
92 |
|
93 |
// Colorpicker
|
94 |
// ---------------------------------------------------------------------
|
95 |
+
wp_register_script('iris', admin_url('js/iris.min.js'), array('jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch'), $wp_version);
|
96 |
|
97 |
+
wp_register_script('wp-color-picker', admin_url('js/color-picker.min.js'), array('iris'), $wp_version);
|
98 |
|
99 |
wp_localize_script('wp-color-picker', 'wpColorPickerL10n', array(
|
100 |
'clear' => __('Clear'),
|
103 |
'current' => __('Current Color'),
|
104 |
));
|
105 |
|
106 |
+
wp_register_script('farbtastic', admin_url('js/farbtastic.js'), array('jquery'), $wp_version);
|
107 |
|
108 |
// Admin
|
109 |
// -------------------------------------------------------------------------
|
includes/controller/class-wooccm-checkout.php
CHANGED
@@ -25,8 +25,6 @@ class WOOCCM_Checkout_Controller {
|
|
25 |
|
26 |
wp_enqueue_style('wooccm');
|
27 |
|
28 |
-
wp_enqueue_script('wooccm-checkout');
|
29 |
-
|
30 |
// UI
|
31 |
// ---------------------------------------------------------------------
|
32 |
wp_enqueue_style('jquery-ui-style');
|
@@ -57,6 +55,11 @@ class WOOCCM_Checkout_Controller {
|
|
57 |
// Dashicons
|
58 |
// ---------------------------------------------------------------------
|
59 |
wp_enqueue_style('dashicons');
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
}
|
62 |
|
25 |
|
26 |
wp_enqueue_style('wooccm');
|
27 |
|
|
|
|
|
28 |
// UI
|
29 |
// ---------------------------------------------------------------------
|
30 |
wp_enqueue_style('jquery-ui-style');
|
55 |
// Dashicons
|
56 |
// ---------------------------------------------------------------------
|
57 |
wp_enqueue_style('dashicons');
|
58 |
+
|
59 |
+
|
60 |
+
// Checkout
|
61 |
+
// ---------------------------------------------------------------------
|
62 |
+
wp_enqueue_script('wooccm-checkout');
|
63 |
}
|
64 |
}
|
65 |
|
includes/controller/class-wooccm-email.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class WOOCCM_Order_Email_Controller {
|
4 |
+
|
5 |
+
protected static $_instance;
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$this->init();
|
9 |
+
}
|
10 |
+
|
11 |
+
public static function instance() {
|
12 |
+
if (is_null(self::$_instance)) {
|
13 |
+
self::$_instance = new self();
|
14 |
+
}
|
15 |
+
return self::$_instance;
|
16 |
+
}
|
17 |
+
|
18 |
+
// Admin
|
19 |
+
// -------------------------------------------------------------------------
|
20 |
+
|
21 |
+
public function get_settings() {
|
22 |
+
return array(
|
23 |
+
array(
|
24 |
+
'type' => 'title',
|
25 |
+
'id' => 'section_title'
|
26 |
+
),
|
27 |
+
array(
|
28 |
+
'name' => esc_html__('Add custom fields', 'woocommerce-checkout-manager-pro'),
|
29 |
+
'desc_tip' => esc_html__('Show the selected fields in the order.', 'woocommerce-checkout-manager-pro'),
|
30 |
+
'id' => 'wooccm_email_custom_fields',
|
31 |
+
'type' => 'select',
|
32 |
+
'class' => 'chosen_select wooccm-premium-field',
|
33 |
+
'options' => array(
|
34 |
+
'yes' => esc_html__('Yes', 'woocommerce-checkout-manager-pro'),
|
35 |
+
'no' => esc_html__('No', 'woocommerce-checkout-manager-pro'),
|
36 |
+
),
|
37 |
+
'default' => 'no',
|
38 |
+
),
|
39 |
+
array(
|
40 |
+
'name' => esc_html__('Add for this order status', 'woocommerce-checkout-manager-pro'),
|
41 |
+
'desc_tip' => esc_html__('Allow customers to upload files in the order.', 'woocommerce-checkout-manager-pro'),
|
42 |
+
'id' => 'wooccm_email_custom_fields_status',
|
43 |
+
'type' => 'multiselect',
|
44 |
+
'class' => 'chosen_select wooccm-premium-field',
|
45 |
+
'options' => wc_get_order_statuses(),
|
46 |
+
),
|
47 |
+
array(
|
48 |
+
'name' => esc_html__('Add custom fields title', 'woocommerce-checkout-manager-pro'),
|
49 |
+
'desc_tip' => esc_html__('Add custom title for the uploads files table.', 'woocommerce-checkout-manager-pro'),
|
50 |
+
'id' => 'wooccm_email_custom_fields_title',
|
51 |
+
'type' => 'text',
|
52 |
+
'class' => 'wooccm-premium-field',
|
53 |
+
'placeholder' => esc_html__('Order extra', 'woocommerce-checkout-manager-pro')
|
54 |
+
),
|
55 |
+
array(
|
56 |
+
'type' => 'sectionend',
|
57 |
+
'id' => 'section_end'
|
58 |
+
)
|
59 |
+
);
|
60 |
+
}
|
61 |
+
|
62 |
+
public function add_header() {
|
63 |
+
global $current_section;
|
64 |
+
?>
|
65 |
+
<li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm§ion=email'); ?>" class="<?php echo ( $current_section == 'email' ? 'current' : '' ); ?>"><?php esc_html_e('Email', 'woocommerce-checkout-manager'); ?></a> | </li>
|
66 |
+
<?php
|
67 |
+
}
|
68 |
+
|
69 |
+
public function add_section() {
|
70 |
+
|
71 |
+
global $current_section;
|
72 |
+
|
73 |
+
if ('email' == $current_section) {
|
74 |
+
|
75 |
+
$settings = $this->get_settings();
|
76 |
+
|
77 |
+
include_once( WOOCCM_PLUGIN_DIR . 'includes/view/backend/pages/email.php' );
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
public function save_settings() {
|
82 |
+
woocommerce_update_options($this->get_settings());
|
83 |
+
}
|
84 |
+
|
85 |
+
public function init() {
|
86 |
+
add_action('wooccm_sections_header', array($this, 'add_header'));
|
87 |
+
add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'));
|
88 |
+
add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
|
89 |
+
}
|
90 |
+
|
91 |
+
}
|
92 |
+
|
93 |
+
WOOCCM_Order_Email_Controller::instance();
|
includes/model/class-wooccm-field.php
CHANGED
@@ -100,6 +100,8 @@ class WOOCCM_Field {
|
|
100 |
'select' => 'Select',
|
101 |
'radio' => 'Radio',
|
102 |
'checkbox' => 'Checkbox',
|
|
|
|
|
103 |
'country' => 'Country',
|
104 |
'state' => 'State',
|
105 |
'multiselect' => 'Multiselect',
|
@@ -147,8 +149,9 @@ class WOOCCM_Field {
|
|
147 |
'hide_product' => array(),
|
148 |
'show_product_cat' => array(),
|
149 |
'hide_product_cat' => array(),
|
150 |
-
'hide_checkout' => false,
|
151 |
'hide_account' => false,
|
|
|
|
|
152 |
// Timing
|
153 |
// -------------------------------------------------------------------
|
154 |
'time_limit_start' => null,
|
@@ -159,6 +162,7 @@ class WOOCCM_Field {
|
|
159 |
'date_limit_variable_max' => 1,
|
160 |
'date_limit_fixed_min' => date('Y-m-d'),
|
161 |
'date_limit_fixed_max' => date('Y-m-d'),
|
|
|
162 |
// Price
|
163 |
// -------------------------------------------------------------------
|
164 |
'add_price' => false,
|
100 |
'select' => 'Select',
|
101 |
'radio' => 'Radio',
|
102 |
'checkbox' => 'Checkbox',
|
103 |
+
'time' => 'Timepicker',
|
104 |
+
'date' => 'Datepicker',
|
105 |
'country' => 'Country',
|
106 |
'state' => 'State',
|
107 |
'multiselect' => 'Multiselect',
|
149 |
'hide_product' => array(),
|
150 |
'show_product_cat' => array(),
|
151 |
'hide_product_cat' => array(),
|
|
|
152 |
'hide_account' => false,
|
153 |
+
'hide_checkout' => false,
|
154 |
+
'hide_email' => false,
|
155 |
// Timing
|
156 |
// -------------------------------------------------------------------
|
157 |
'time_limit_start' => null,
|
162 |
'date_limit_variable_max' => 1,
|
163 |
'date_limit_fixed_min' => date('Y-m-d'),
|
164 |
'date_limit_fixed_max' => date('Y-m-d'),
|
165 |
+
'date_limit_days' => array(),
|
166 |
// Price
|
167 |
// -------------------------------------------------------------------
|
168 |
'add_price' => false,
|
includes/view/backend/pages/email.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php include_once( 'parts/tabs.php' ); ?>
|
2 |
+
<h1 class="screen-reader-text"><?php esc_html_e('Email', 'woocommerce-checkout-manager'); ?></h1>
|
3 |
+
<h2><?php esc_html_e('Email settings', 'woocommerce-checkout-manager'); ?></h2>
|
4 |
+
<div id="<?php printf('wooccm_%s_settings-description', $current_section); ?>">
|
5 |
+
<p><?php printf(esc_html__('Customize and manage the checkout %s fields.', 'woocommerce-checkout-manager'), $current_section); ?></p>
|
6 |
+
</div>
|
7 |
+
<?php woocommerce_admin_fields($settings); ?>
|
includes/view/backend/pages/modals/modal-field.php
CHANGED
@@ -33,10 +33,13 @@
|
|
33 |
<# if ( !_.contains(<?php echo json_encode(array_merge($option, $template)); ?>, data.type)) { #>
|
34 |
<?php include_once( 'parts/panel-price.php' ); ?>
|
35 |
<# } #>
|
36 |
-
|
37 |
-
<?php
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
40 |
<div class="clear"></div>
|
41 |
</div>
|
42 |
</div>
|
33 |
<# if ( !_.contains(<?php echo json_encode(array_merge($option, $template)); ?>, data.type)) { #>
|
34 |
<?php include_once( 'parts/panel-price.php' ); ?>
|
35 |
<# } #>
|
36 |
+
<# if (data.type == 'date') { #>
|
37 |
+
<?php include_once( 'parts/panel-datepicker.php' ); ?>
|
38 |
+
<# } #>
|
39 |
+
<# if (data.type == 'time') { #>
|
40 |
+
<?php include_once( 'parts/panel-timepicker.php' ); ?>
|
41 |
+
<# } #>
|
42 |
+
<?php include_once('parts/panel-admin.php' ); ?>
|
43 |
<div class="clear"></div>
|
44 |
</div>
|
45 |
</div>
|
includes/view/backend/pages/modals/parts/field-tabs.php
CHANGED
@@ -15,19 +15,19 @@
|
|
15 |
<li class="display_options">
|
16 |
<a href="#tab_panel_display"><span><?php esc_html_e('Display', 'woocommerce-checkout-manager'); ?></span></a>
|
17 |
</li>
|
18 |
-
|
19 |
-
<li class="
|
20 |
-
<a href="#
|
21 |
</li>
|
22 |
<# } #>
|
23 |
-
<# if (data.type == '
|
24 |
<li class="timepicker_options">
|
25 |
<a href="#tab_panel_timepicker"><span><?php esc_html_e('Timepicker', 'woocommerce-checkout-manager'); ?></span></a>
|
26 |
</li>
|
27 |
-
<# }
|
28 |
-
<# if (
|
29 |
-
<li class="
|
30 |
-
<a href="#
|
31 |
</li>
|
32 |
<# } #>
|
33 |
<li class="admin_options">
|
15 |
<li class="display_options">
|
16 |
<a href="#tab_panel_display"><span><?php esc_html_e('Display', 'woocommerce-checkout-manager'); ?></span></a>
|
17 |
</li>
|
18 |
+
<# if ( !_.contains(<?php echo json_encode(array_merge($option, $template)); ?>, data.type)) { #>
|
19 |
+
<li class="price_options">
|
20 |
+
<a href="#tab_panel_price"><span><?php esc_html_e('Price', 'woocommerce-checkout-manager'); ?></span></a>
|
21 |
</li>
|
22 |
<# } #>
|
23 |
+
<# if (data.type == 'time') { #>
|
24 |
<li class="timepicker_options">
|
25 |
<a href="#tab_panel_timepicker"><span><?php esc_html_e('Timepicker', 'woocommerce-checkout-manager'); ?></span></a>
|
26 |
</li>
|
27 |
+
<# } #>
|
28 |
+
<# if (data.type == 'date') { #>
|
29 |
+
<li class="datepicker_options">
|
30 |
+
<a href="#tab_panel_datepicker"><span><?php esc_html_e('Datepicker', 'woocommerce-checkout-manager'); ?></span></a>
|
31 |
</li>
|
32 |
<# } #>
|
33 |
<li class="admin_options">
|
includes/view/backend/pages/modals/parts/panel-datepicker.php
CHANGED
@@ -1,50 +1,57 @@
|
|
1 |
<div id="tab_panel_datepicker" class="panel woocommerce_options_panel hidden" style="display: none;">
|
2 |
-
<div class="options_group">
|
3 |
<p class="form-field">
|
4 |
<label><?php esc_html_e('Date format', 'woocommerce-checkout-manager'); ?></label>
|
5 |
<input class="short" type="text" placeholder="dd-mm-yy" name="format_date" value="{{data.format_date}}">
|
6 |
<span class="description"><a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.</span>
|
|
|
7 |
</p>
|
|
|
|
|
8 |
<p class="form-field">
|
9 |
<label><?php esc_html_e('Date limit', 'woocommerce-checkout-manager'); ?></label>
|
10 |
<select class="media-modal-change select short" name="date_limit">
|
11 |
<option <# if ( data.date_limit == 'variable' ) { #>selected="selected"<# } #> value="variable"><?php esc_html_e('Since current date', 'woocommerce-checkout-manager'); ?></option>
|
12 |
<option <# if ( data.date_limit == 'fixed' ) { #>selected="selected"<# } #> value="fixed"><?php esc_html_e('Between fixed dates', 'woocommerce-checkout-manager'); ?></option>
|
13 |
</select>
|
|
|
14 |
</p>
|
15 |
</div>
|
16 |
<# if ( data.date_limit == 'variable' ) { #>
|
17 |
-
<div class="options_group">
|
18 |
<p class="form-field">
|
19 |
<label><?php esc_html_e('Days before', 'woocommerce-checkout-manager'); ?></label>
|
20 |
<input class="short" type="number" placeholder="3" min="0" max="365" name="date_limit_variable_min" value="{{data.date_limit_variable_min}}">
|
|
|
21 |
</p>
|
22 |
<p class="form-field">
|
23 |
<label><?php esc_html_e('Days after', 'woocommerce-checkout-manager'); ?></label>
|
24 |
<input class="short" type="number" placeholder="3" min="0" max="365" name="date_limit_variable_max" value="{{data.date_limit_variable_max}}">
|
|
|
25 |
</p>
|
26 |
</div>
|
27 |
<# } #>
|
28 |
<# if ( data.date_limit == 'fixed' ) { #>
|
29 |
-
<div class="options_group wooccm-enhanced-between-dates">
|
30 |
<p class="form-field dimensions_field">
|
31 |
<label for="product_length"><?php esc_html_e('Between dates', 'woocommerce-checkout-manager'); ?></label>
|
32 |
<span class="wrap">
|
33 |
<input style="width:48.1%" type="text" class="short " name="date_limit_fixed_min" value="{{data.date_limit_fixed_min}}" placeholder="<?php esc_html_e('From… YYYY-MM-DD', 'woocommerce-checkout-manager'); ?>" maxlength="10" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])">
|
34 |
<input style="width:48.1%;margin: 0;" type="text" class="short" name="date_limit_fixed_max" value="{{data.date_limit_fixed_max}}" placeholder="<?php esc_html_e('From… YYYY-MM-DD', 'woocommerce-checkout-manager'); ?>" maxlength="10" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])">
|
35 |
</span>
|
36 |
-
<span class="woocommerce-
|
37 |
</p>
|
38 |
</div>
|
39 |
<# } #>
|
40 |
-
<div class="options_group">
|
41 |
<p class="form-field">
|
42 |
<label><?php esc_html_e('Days disable', 'woocommerce-checkout-manager'); ?></label>
|
43 |
-
<select class="wooccm-enhanced-select" name="date_limit_days" data-placeholder="<?php esc_attr_e('Disable week days', 'woocommerce-checkout-manager'); ?>" data-allow_clear="true" multiple="multiple">
|
44 |
<?php for ($day_index = 0; $day_index <= 6; $day_index++) : ?>
|
45 |
<option <# if ( _.contains(data.date_limit_days, '<?php echo esc_attr($day_index); ?>') ) { #>selected="selected"<# } #> value="<?php echo esc_attr($day_index); ?>"><?php echo $wp_locale->get_weekday($day_index); ?></option>
|
46 |
<?php endfor; ?>
|
47 |
</select>
|
|
|
48 |
</p>
|
49 |
</div>
|
50 |
</div>
|
1 |
<div id="tab_panel_datepicker" class="panel woocommerce_options_panel hidden" style="display: none;">
|
2 |
+
<div class="options_group wooccm-premium">
|
3 |
<p class="form-field">
|
4 |
<label><?php esc_html_e('Date format', 'woocommerce-checkout-manager'); ?></label>
|
5 |
<input class="short" type="text" placeholder="dd-mm-yy" name="format_date" value="{{data.format_date}}">
|
6 |
<span class="description"><a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.</span>
|
7 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
8 |
</p>
|
9 |
+
</div>
|
10 |
+
<div class="options_group wooccm-premium">
|
11 |
<p class="form-field">
|
12 |
<label><?php esc_html_e('Date limit', 'woocommerce-checkout-manager'); ?></label>
|
13 |
<select class="media-modal-change select short" name="date_limit">
|
14 |
<option <# if ( data.date_limit == 'variable' ) { #>selected="selected"<# } #> value="variable"><?php esc_html_e('Since current date', 'woocommerce-checkout-manager'); ?></option>
|
15 |
<option <# if ( data.date_limit == 'fixed' ) { #>selected="selected"<# } #> value="fixed"><?php esc_html_e('Between fixed dates', 'woocommerce-checkout-manager'); ?></option>
|
16 |
</select>
|
17 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
18 |
</p>
|
19 |
</div>
|
20 |
<# if ( data.date_limit == 'variable' ) { #>
|
21 |
+
<div class="options_group wooccm-premium">
|
22 |
<p class="form-field">
|
23 |
<label><?php esc_html_e('Days before', 'woocommerce-checkout-manager'); ?></label>
|
24 |
<input class="short" type="number" placeholder="3" min="0" max="365" name="date_limit_variable_min" value="{{data.date_limit_variable_min}}">
|
25 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
26 |
</p>
|
27 |
<p class="form-field">
|
28 |
<label><?php esc_html_e('Days after', 'woocommerce-checkout-manager'); ?></label>
|
29 |
<input class="short" type="number" placeholder="3" min="0" max="365" name="date_limit_variable_max" value="{{data.date_limit_variable_max}}">
|
30 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
31 |
</p>
|
32 |
</div>
|
33 |
<# } #>
|
34 |
<# if ( data.date_limit == 'fixed' ) { #>
|
35 |
+
<div class="options_group wooccm-premium wooccm-enhanced-between-dates">
|
36 |
<p class="form-field dimensions_field">
|
37 |
<label for="product_length"><?php esc_html_e('Between dates', 'woocommerce-checkout-manager'); ?></label>
|
38 |
<span class="wrap">
|
39 |
<input style="width:48.1%" type="text" class="short " name="date_limit_fixed_min" value="{{data.date_limit_fixed_min}}" placeholder="<?php esc_html_e('From… YYYY-MM-DD', 'woocommerce-checkout-manager'); ?>" maxlength="10" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])">
|
40 |
<input style="width:48.1%;margin: 0;" type="text" class="short" name="date_limit_fixed_max" value="{{data.date_limit_fixed_max}}" placeholder="<?php esc_html_e('From… YYYY-MM-DD', 'woocommerce-checkout-manager'); ?>" maxlength="10" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])">
|
41 |
</span>
|
42 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
43 |
</p>
|
44 |
</div>
|
45 |
<# } #>
|
46 |
+
<div class="options_group wooccm-premium">
|
47 |
<p class="form-field">
|
48 |
<label><?php esc_html_e('Days disable', 'woocommerce-checkout-manager'); ?></label>
|
49 |
+
<select class="wooccm-enhanced-select" name="date_limit_days[]" data-placeholder="<?php esc_attr_e('Disable week days', 'woocommerce-checkout-manager'); ?>" data-allow_clear="true" multiple="multiple">
|
50 |
<?php for ($day_index = 0; $day_index <= 6; $day_index++) : ?>
|
51 |
<option <# if ( _.contains(data.date_limit_days, '<?php echo esc_attr($day_index); ?>') ) { #>selected="selected"<# } #> value="<?php echo esc_attr($day_index); ?>"><?php echo $wp_locale->get_weekday($day_index); ?></option>
|
52 |
<?php endfor; ?>
|
53 |
</select>
|
54 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
55 |
</p>
|
56 |
</div>
|
57 |
</div>
|
includes/view/backend/pages/modals/parts/panel-display.php
CHANGED
@@ -72,13 +72,19 @@
|
|
72 |
<p class="form-field">
|
73 |
<label><?php esc_html_e('Hide on account', 'woocommerce-checkout-manager'); ?></label>
|
74 |
<input <# if (data.hide_account) { #>checked="checked"<# } #> type="checkbox" name="hide_account" value="1">
|
75 |
-
<span class="description hidden"><?php esc_html_e('Hide this field on the account page', 'woocommerce-checkout-manager'); ?></span>
|
76 |
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
77 |
</p>
|
78 |
<p class="form-field">
|
79 |
<label><?php esc_html_e('Hide on checkout', 'woocommerce-checkout-manager'); ?></label>
|
80 |
<input <# if (data.hide_checkout) { #>checked="checked"<# } #> type="checkbox" name="hide_checkout" value="1">
|
81 |
-
<span class="description hidden"><?php esc_html_e('Hide this field on the checkout page', 'woocommerce-checkout-manager'); ?></span>
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
83 |
</p>
|
84 |
</div>
|
72 |
<p class="form-field">
|
73 |
<label><?php esc_html_e('Hide on account', 'woocommerce-checkout-manager'); ?></label>
|
74 |
<input <# if (data.hide_account) { #>checked="checked"<# } #> type="checkbox" name="hide_account" value="1">
|
75 |
+
<span class="description hidden" style="display: inline-block"><?php esc_html_e('Hide this field on the account page', 'woocommerce-checkout-manager'); ?></span>
|
76 |
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
77 |
</p>
|
78 |
<p class="form-field">
|
79 |
<label><?php esc_html_e('Hide on checkout', 'woocommerce-checkout-manager'); ?></label>
|
80 |
<input <# if (data.hide_checkout) { #>checked="checked"<# } #> type="checkbox" name="hide_checkout" value="1">
|
81 |
+
<span class="description hidden" style="display: inline-block"><?php esc_html_e('Hide this field on the checkout page', 'woocommerce-checkout-manager'); ?></span>
|
82 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
83 |
+
</p>
|
84 |
+
<p class="form-field">
|
85 |
+
<label><?php esc_html_e('Hide on emails', 'woocommerce-checkout-manager'); ?></label>
|
86 |
+
<input <# if (data.hide_checkout) { #>checked="checked"<# } #> type="checkbox" name="hide_email" value="1">
|
87 |
+
<span class="description hidden" style="display: inline-block"><?php esc_html_e('Hide this field on the user email', 'woocommerce-checkout-manager'); ?></span>
|
88 |
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
89 |
</p>
|
90 |
</div>
|
includes/view/backend/pages/modals/parts/panel-suggestions.php
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
<div id="tab_panel_suggestions" class="panel woocommerce_options_panel hidden" style="display: none;">
|
2 |
-
<div class="marketplace-suggestions-container showing-suggestion" data-marketplace-suggestions-context="product-edit-meta-tab-header">
|
3 |
-
<div class="marketplace-suggestion-container" data-suggestion-slug="product-edit-meta-tab-header">
|
4 |
-
<div class="marketplace-suggestion-container-content">
|
5 |
-
<h4>Recommended extensions</h4></div>
|
6 |
-
<div class="marketplace-suggestion-container-cta"></div>
|
7 |
-
</div>
|
8 |
-
</div>
|
9 |
-
<div class="marketplace-suggestions-container showing-suggestion" data-marketplace-suggestions-context="product-edit-meta-tab-body">
|
10 |
-
<div class="marketplace-suggestion-container" data-suggestion-slug="product-edit-name-your-price"><img src="https://woocommerce.com/wp-content/plugins/wccom-plugins//marketplace-suggestions/icons/name-your-price.svg" class="marketplace-suggestion-icon">
|
11 |
-
<div class="marketplace-suggestion-container-content">
|
12 |
-
<h4>Name Your Price</h4>
|
13 |
-
<p>Let customers pay what they want - useful for donations, tips and more</p>
|
14 |
-
</div>
|
15 |
-
<div class="marketplace-suggestion-container-cta"><a href="https://woocommerce.com/products/name-your-price/?wccom-site=http%3A%2F%2Flocalhost%2Fwoocommerce-checkout&wccom-back=%2Fwoocommerce-checkout%2Fwp-admin%2Fpost.php%3Fpost%3D6%26%23038%3Baction%3Dedit&wccom-woo-version=3.7.0&utm_source=editproduct&utm_campaign=marketplacesuggestions&utm_medium=product" target="blank" class="button">Learn More</a>
|
16 |
-
<a class="suggestion-dismiss" title="Dismiss this suggestion" href="#"></a>
|
17 |
-
</div>
|
18 |
-
</div>
|
19 |
-
<div class="marketplace-suggestion-container" data-suggestion-slug="product-edit-variation-images"><img src="https://woocommerce.com/wp-content/plugins/wccom-plugins//marketplace-suggestions/icons/additional-variation-images.svg" class="marketplace-suggestion-icon">
|
20 |
-
<div class="marketplace-suggestion-container-content">
|
21 |
-
<h4>Additional Variation Images</h4>
|
22 |
-
<p>Showcase your products in the best light with a image for each variation</p>
|
23 |
-
</div>
|
24 |
-
<div class="marketplace-suggestion-container-cta"><a href="https://woocommerce.com/products/woocommerce-additional-variation-images/?wccom-site=http%3A%2F%2Flocalhost%2Fwoocommerce-checkout&wccom-back=%2Fwoocommerce-checkout%2Fwp-admin%2Fpost.php%3Fpost%3D6%26%23038%3Baction%3Dedit&wccom-woo-version=3.7.0&utm_source=editproduct&utm_campaign=marketplacesuggestions&utm_medium=product" target="blank" class="button">Learn More</a>
|
25 |
-
<a class="suggestion-dismiss" title="Dismiss this suggestion" href="#"></a>
|
26 |
-
</div>
|
27 |
-
</div>
|
28 |
-
<div class="marketplace-suggestion-container" data-suggestion-slug="product-edit-woocommerce-one-page-checkout"><img src="https://woocommerce.com/wp-content/plugins/wccom-plugins//marketplace-suggestions/icons/one-page-checkout.svg" class="marketplace-suggestion-icon">
|
29 |
-
<div class="marketplace-suggestion-container-content">
|
30 |
-
<h4>One Page Checkout</h4>
|
31 |
-
<p>Don't make customers click around - let them choose products, checkout & pay all on one page</p>
|
32 |
-
</div>
|
33 |
-
<div class="marketplace-suggestion-container-cta"><a href="https://woocommerce.com/products/woocommerce-one-page-checkout/?wccom-site=http%3A%2F%2Flocalhost%2Fwoocommerce-checkout&wccom-back=%2Fwoocommerce-checkout%2Fwp-admin%2Fpost.php%3Fpost%3D6%26%23038%3Baction%3Dedit&wccom-woo-version=3.7.0&utm_source=editproduct&utm_campaign=marketplacesuggestions&utm_medium=product" target="blank" class="button">Learn More</a>
|
34 |
-
<a class="suggestion-dismiss" title="Dismiss this suggestion" href="#"></a>
|
35 |
-
</div>
|
36 |
-
</div>
|
37 |
-
<div class="marketplace-suggestion-container" data-suggestion-slug="product-edit-min-max-quantities"><img src="https://woocommerce.com/wp-content/plugins/wccom-plugins//marketplace-suggestions/icons/min-max-quantities.svg" class="marketplace-suggestion-icon">
|
38 |
-
<div class="marketplace-suggestion-container-content">
|
39 |
-
<h4>Min/Max Quantities</h4>
|
40 |
-
<p>Specify minimum and maximum allowed product quantities for orders to be completed</p>
|
41 |
-
</div>
|
42 |
-
<div class="marketplace-suggestion-container-cta"><a href="https://woocommerce.com/products/min-max-quantities/?wccom-site=http%3A%2F%2Flocalhost%2Fwoocommerce-checkout&wccom-back=%2Fwoocommerce-checkout%2Fwp-admin%2Fpost.php%3Fpost%3D6%26%23038%3Baction%3Dedit&wccom-woo-version=3.7.0&utm_source=editproduct&utm_campaign=marketplacesuggestions&utm_medium=product" target="blank" class="button">Learn More</a>
|
43 |
-
<a class="suggestion-dismiss" title="Dismiss this suggestion" href="#"></a>
|
44 |
-
</div>
|
45 |
-
</div>
|
46 |
-
</div>
|
47 |
-
<div class="marketplace-suggestions-container showing-suggestion" data-marketplace-suggestions-context="product-edit-meta-tab-footer">
|
48 |
-
<div class="marketplace-suggestion-container" data-suggestion-slug="product-edit-meta-tab-footer-browse-all">
|
49 |
-
<div class="marketplace-suggestion-container-content has-manage-link"><a class="marketplace-suggestion-manage-link linkout" href="http://localhost/woocommerce-checkout/wp-admin/admin.php?page=wc-settings&tab=advanced&section=woocommerce_com">Manage suggestions</a></div>
|
50 |
-
<div class="marketplace-suggestion-container-cta"><a href="https://woocommerce.com/product-category/woocommerce-extensions/?wccom-site=http%3A%2F%2Flocalhost%2Fwoocommerce-checkout&wccom-back=%2Fwoocommerce-checkout%2Fwp-admin%2Fpost.php%3Fpost%3D6%26%23038%3Baction%3Dedit&wccom-woo-version=3.7.0&utm_source=editproduct&utm_campaign=marketplacesuggestions&utm_medium=product" target="blank" class="linkout">Browse all extensions<span class="dashicons dashicons-external"></span></a></div>
|
51 |
-
</div>
|
52 |
-
</div>
|
53 |
-
<div class="marketplace-suggestions-metabox-nosuggestions-placeholder hidden">
|
54 |
-
<img src="https://woocommerce.com/wp-content/plugins/wccom-plugins/marketplace-suggestions/icons/get_more_options.svg" class="marketplace-suggestion-icon">
|
55 |
-
<div class="marketplace-suggestion-placeholder-content">
|
56 |
-
<h4>Enhance your products</h4>
|
57 |
-
<p>Extensions can add new functionality to your product pages that make your store stand out</p>
|
58 |
-
</div>
|
59 |
-
<a href="https://woocommerce.com/product-category/woocommerce-extensions/?utm_source=editproduct&utm_campaign=marketplacesuggestions&utm_medium=product" target="blank" class="button">Browse the Marketplace</a>
|
60 |
-
<br>
|
61 |
-
<a class="marketplace-suggestion-manage-link" href="http://localhost/woocommerce-checkout/wp-admin/admin.php?page=wc-settings&tab=advanced&section=woocommerce_com">Manage suggestions</a>
|
62 |
-
</div>
|
63 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/view/backend/pages/modals/parts/panel-timepicker.php
CHANGED
@@ -1,16 +1,19 @@
|
|
1 |
<div id="tab_panel_timepicker" class="panel woocommerce_options_panel hidden" style="display: none;">
|
2 |
-
<div class="options_group">
|
3 |
<p class="form-field">
|
4 |
<label><?php esc_html_e('Hour start', 'woocommerce-checkout-manager'); ?></label>
|
5 |
<input class="short" type="number" min="0" max="24" placeholder="6" name="time_limit_start" value="{{data.time_limit_start}}">
|
|
|
6 |
</p>
|
7 |
<p class="form-field">
|
8 |
<label><?php esc_html_e('Hour end', 'woocommerce-checkout-manager'); ?></label>
|
9 |
<input class="short" type="number" min="0" max="24" placeholder="9" name="time_limit_end" value="{{data.time_limit_end}}">
|
|
|
10 |
</p>
|
11 |
<p class="form-field">
|
12 |
<label><?php esc_html_e('Minutes interval', 'woocommerce-checkout-manager'); ?></label>
|
13 |
-
<input class="short" type="number" min="0" max="60"
|
|
|
14 |
</p>
|
15 |
</div>
|
16 |
</div>
|
1 |
<div id="tab_panel_timepicker" class="panel woocommerce_options_panel hidden" style="display: none;">
|
2 |
+
<div class="options_group wooccm-premium">
|
3 |
<p class="form-field">
|
4 |
<label><?php esc_html_e('Hour start', 'woocommerce-checkout-manager'); ?></label>
|
5 |
<input class="short" type="number" min="0" max="24" placeholder="6" name="time_limit_start" value="{{data.time_limit_start}}">
|
6 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
7 |
</p>
|
8 |
<p class="form-field">
|
9 |
<label><?php esc_html_e('Hour end', 'woocommerce-checkout-manager'); ?></label>
|
10 |
<input class="short" type="number" min="0" max="24" placeholder="9" name="time_limit_end" value="{{data.time_limit_end}}">
|
11 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
12 |
</p>
|
13 |
<p class="form-field">
|
14 |
<label><?php esc_html_e('Minutes interval', 'woocommerce-checkout-manager'); ?></label>
|
15 |
+
<input class="short" type="number" min="0" max="60" step="5" placeholder="15" name="time_limit_interval" value="{{data.time_limit_interval}}">
|
16 |
+
<span class="description premium">(<?php esc_html_e('This is a premium feature', 'woocommerce-checkout-manager'); ?>)</span>
|
17 |
</p>
|
18 |
</div>
|
19 |
</div>
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://quadlayers.com/
|
|
4 |
Tags: woocommerce, woocommerce checkout, field manager, checkout editor, checkout field, shipping field, billing field, order field, additional field
|
5 |
Requires at least: 3.0
|
6 |
Tested up to: 5.2.4
|
7 |
-
Stable tag: 4.7.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -99,6 +99,9 @@ Your Order data can be reviewed in each order within the default WooCommerce Ord
|
|
99 |
|
100 |
== Changelog ==
|
101 |
|
|
|
|
|
|
|
102 |
= 4.7.2 =
|
103 |
* Fix: select2
|
104 |
* Fix: reorder fields
|
4 |
Tags: woocommerce, woocommerce checkout, field manager, checkout editor, checkout field, shipping field, billing field, order field, additional field
|
5 |
Requires at least: 3.0
|
6 |
Tested up to: 5.2.4
|
7 |
+
Stable tag: 4.7.3
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
99 |
|
100 |
== Changelog ==
|
101 |
|
102 |
+
= 4.7.3 =
|
103 |
+
* Improvement: date & time fields
|
104 |
+
|
105 |
= 4.7.2 =
|
106 |
* Fix: select2
|
107 |
* Fix: reorder fields
|
templates/order/order-custom-fields.php
CHANGED
@@ -1,9 +1,7 @@
|
|
1 |
<h2 class="woocommerce-order-details__title"><?php echo ($title = get_option('wooccm_order_custom_fields_title', false)) ? esc_html($title) : esc_html__('Custom fields', 'woocommerce-checkout-manager'); ?></h2>
|
2 |
-
|
3 |
<?php $option = WOOCCM()->billing->get_option_types(); ?>
|
4 |
<table class="woocommerce-table shop_table order_details">
|
5 |
<tbody>
|
6 |
-
|
7 |
<?php
|
8 |
if (count($checkout = WC()->checkout->get_checkout_fields())):
|
9 |
foreach ($checkout as $field_type => $fields) :
|
1 |
<h2 class="woocommerce-order-details__title"><?php echo ($title = get_option('wooccm_order_custom_fields_title', false)) ? esc_html($title) : esc_html__('Custom fields', 'woocommerce-checkout-manager'); ?></h2>
|
|
|
2 |
<?php $option = WOOCCM()->billing->get_option_types(); ?>
|
3 |
<table class="woocommerce-table shop_table order_details">
|
4 |
<tbody>
|
|
|
5 |
<?php
|
6 |
if (count($checkout = WC()->checkout->get_checkout_fields())):
|
7 |
foreach ($checkout as $field_type => $fields) :
|
woocommerce-checkout-manager.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Plugin Name: WooCommerce Checkout Manager
|
5 |
* Description: Manages WooCommerce Checkout, the advanced way.
|
6 |
-
* Version: 4.7.
|
7 |
* Author: QuadLayers
|
8 |
* Author URI: https://www.quadlayers.com
|
9 |
* Copyright: 2019 QuadLayers (https://www.quadlayers.com)
|
@@ -17,7 +17,7 @@ if (!defined('WOOCCM_PLUGIN_NAME')) {
|
|
17 |
define('WOOCCM_PLUGIN_NAME', 'WooCommerce Checkout Manager');
|
18 |
}
|
19 |
if (!defined('WOOCCM_PLUGIN_VERSION')) {
|
20 |
-
define('WOOCCM_PLUGIN_VERSION', '4.7.
|
21 |
}
|
22 |
if (!defined('WOOCCM_PLUGIN_FILE')) {
|
23 |
define('WOOCCM_PLUGIN_FILE', __FILE__);
|
3 |
/**
|
4 |
* Plugin Name: WooCommerce Checkout Manager
|
5 |
* Description: Manages WooCommerce Checkout, the advanced way.
|
6 |
+
* Version: 4.7.3
|
7 |
* Author: QuadLayers
|
8 |
* Author URI: https://www.quadlayers.com
|
9 |
* Copyright: 2019 QuadLayers (https://www.quadlayers.com)
|
17 |
define('WOOCCM_PLUGIN_NAME', 'WooCommerce Checkout Manager');
|
18 |
}
|
19 |
if (!defined('WOOCCM_PLUGIN_VERSION')) {
|
20 |
+
define('WOOCCM_PLUGIN_VERSION', '4.7.3');
|
21 |
}
|
22 |
if (!defined('WOOCCM_PLUGIN_FILE')) {
|
23 |
define('WOOCCM_PLUGIN_FILE', __FILE__);
|