first commit

This commit is contained in:
2026-03-05 13:07:40 +01:00
commit 64ba0721ee
25709 changed files with 4691006 additions and 0 deletions

View File

@@ -0,0 +1,593 @@
jQuery( function( $ ) {
$( '.wcpdf-extensions .more' ).hide();
$( '.wcpdf-extensions > li' ).on( 'click', function( event ) {
$( this ).toggleClass( 'expanded' );
$( this ).find( '.more' ).slideToggle();
} );
$( '.edit-next-number' ).on( 'click', function( event ) {
// enable input & show save button
$( this ).hide();
$( this ).siblings( 'input' ).prop( 'disabled', false );
$( this ).siblings( '.save-next-number.button' ).show();
} );
$( '.save-next-number' ).on( 'click', function( event ) {
$input = $( this ).siblings( 'input' );
$input.addClass( 'ajax-waiting' );
let number = $input.val();
if ( number.length > 0 && number > 2147483647 ) {
alert( wpo_wcpdf_admin.mysql_int_size_limit );
$input.removeClass( 'ajax-waiting' );
return;
}
let data = {
security: $input.data( 'nonce' ),
action: 'wpo_wcpdf_set_next_number',
store: $input.data( 'store' ),
number: number,
};
xhr = $.ajax( {
type: 'POST',
url: wpo_wcpdf_admin.ajaxurl,
data: data,
success: function( response ) {
$input.removeClass( 'ajax-waiting' );
$input.siblings( '.edit-next-number' ).show();
$input.prop( 'disabled', 'disabled' );
$input.siblings( '.save-next-number.button' ).hide();
}
} );
} );
$( "[name='wpo_wcpdf_documents_settings_invoice[display_number]']" ).on( 'change', function( event ) {
if ( $( this ).val() == 'order_number' ) {
$( this ).closest( 'td' ).find( '.description' ).slideDown();
$( this ).closest( 'tr' ).next( 'tr' ).hide();
} else {
$( this ).closest( 'td' ).find( '.description' ).hide();
$( this ).closest( 'tr' ).next( 'tr' ).show();
}
} ).trigger( 'change' );
// enable settings document switch
$( '.wcpdf_document_settings_sections > h2' ).on( 'click', function() {
$( this ).parent().find( 'ul' ).toggleClass( 'active' );
} );
// Add admin pointers
$.each( wpo_wcpdf_admin.pointers, function( key, pointer ) {
$( pointer.target ).pointer(
{
content: pointer.content,
position:
{
edge: pointer.position.edge,
align: pointer.position.align
},
pointerClass: pointer.pointer_class,
pointerWidth: pointer.pointer_width,
close: function() {
jQuery.post(
wpo_wcpdf_admin.ajaxurl,
{
pointer: key,
action: 'dismiss-wp-pointer',
}
);
},
}
);
// Check if pointer was dismissed
if ( $.inArray( key, wpo_wcpdf_admin.dismissed_pointers.split(',') ) === -1 ) {
$( pointer.target ).pointer('open');
}
});
// enable WooCommerce help tips
$( '.woocommerce-help-tip' ).tipTip( {
'attribute': 'data-tip',
'fadeIn': 50,
'fadeOut': 50,
'delay': 200
} );
//----------> Preview <----------//
// objects
let $previewWrapper = $( '#wpo-wcpdf-preview-wrapper' );
let $preview = $( '#wpo-wcpdf-preview-wrapper .preview' );
let $previewOrderIdInput = $( '#wpo-wcpdf-preview-wrapper input[name="order_id"]' );
let $previewDocumentTypeInput = $( '#wpo-wcpdf-preview-wrapper input[name="document_type"]' );
let $previewOutputFormatInput = $( '#wpo-wcpdf-preview-wrapper input[name="output_format"]' );
let $previewNonceInput = $( '#wpo-wcpdf-preview-wrapper input[name="nonce"]' );
let $previewSettingsForm = $( '#wpo-wcpdf-settings' );
let previewXhr = null;
// variables
let previewOrderId, previewDocumentType, previewOutputFormat, previewNonce, previewSettingsFormData, previewTimeout, previewSearchTimeout, previousWindowWidth;
function loadPreviewData() {
previewOrderId = $previewOrderIdInput.val();
previewDocumentType = $previewDocumentTypeInput.val();
previewOutputFormat = $previewOutputFormatInput.val();
previewNonce = $previewNonceInput.val();
previewSettingsFormData = $previewSettingsForm.serialize();
}
function resetDocumentType() {
$previewDocumentTypeInput.val( $previewDocumentTypeInput.data( 'default' ) ).trigger( 'change' );
}
function resetOrderId() {
$previewOrderIdInput.val( '' ).trigger( 'change' );
}
$( document ).ready( function() {
resetDocumentType(); // force document type reset
resetOrderId(); // force order ID reset
loadPreviewData(); // load preview data
previousWindowWidth = $(window).width();
determinePreviewStates(); // determine preview states based on screen size
} );
$( window ).on( 'resize', determinePreviewStates );
function determinePreviewStates() {
// Check if preview states are allowed to change based on screen size
if ( $previewWrapper.attr( 'data-preview-states-lock') == false ) {
// On small screens: 2 preview states and close preview
if ( $(this).width() <= 1200 && ( previousWindowWidth > 1200 || $(this).width() == previousWindowWidth ) ) {
if ( $previewWrapper.attr( 'data-preview-state') == 'full' ) {
$previewWrapper.find( '.preview-document' ).show();
$previewWrapper.find( '.sidebar' ).hide();
$previewWrapper.find( '.slide-left' ).hide();
$previewWrapper.find( '.slide-right' ).show();
$previewWrapper.attr( 'data-preview-states', 2 );
$previewWrapper.attr( 'data-preview-state', 'full' );
$previewWrapper.attr( 'data-from-preview-state', '' );
} else {
$previewWrapper.find( '.preview-document' ).hide();
$previewWrapper.find( '.sidebar' ).show();
$previewWrapper.find( '.slide-left' ).show();
$previewWrapper.find( '.slide-right' ).hide();
$previewWrapper.attr( 'data-preview-states', 2 );
$previewWrapper.attr( 'data-preview-state', 'closed' );
$previewWrapper.attr( 'data-from-preview-state', '' );
}
// On larger screens: 3 preview states and show settings as sidebar
} else if ( $(this).width() > 1200 && ( previousWindowWidth <= 1200 || $(this).width() == previousWindowWidth ) ) {
if ( $previewWrapper.attr( 'data-preview-state') == 'full' ) {
$previewWrapper.find( '.preview-document' ).show();
$previewWrapper.find( '.sidebar' ).hide();
$previewWrapper.find( '.slide-left' ).hide();
$previewWrapper.find( '.slide-right' ).show();
$previewWrapper.attr( 'data-preview-states', 3 );
$previewWrapper.attr( 'data-preview-state', 'full' );
$previewWrapper.attr( 'data-from-preview-state', 'sidebar' );
$previewWrapper.addClass( 'static' );
} else if ( $previewWrapper.attr( 'data-preview-state') == 'closed' && $(this).width() !== previousWindowWidth ) {
$previewWrapper.find( '.preview-document' ).hide();
$previewWrapper.find( '.sidebar' ).show();
$previewWrapper.find( '.slide-left' ).show();
$previewWrapper.find( '.slide-right' ).hide();
$previewWrapper.attr( 'data-preview-states', 3 );
$previewWrapper.attr( 'data-preview-state', 'closed' );
$previewWrapper.attr( 'data-from-preview-state', '' );
$previewWrapper.removeClass( 'static' );
} else {
$previewWrapper.find( '.preview-document, .sidebar' ).show();
$previewWrapper.find( '.slide-left, .slide-right' ).show();
$previewWrapper.attr( 'data-preview-states', 3 );
$previewWrapper.attr( 'data-preview-state', 'sidebar' );
$previewWrapper.attr( 'data-from-preview-state', '' );
$previewWrapper.removeClass( 'static' );
}
}
}
previousWindowWidth = $(this).width();
}
$( '.slide-left' ).on( 'click', function() {
let previewStates = $previewWrapper.attr( 'data-preview-states' );
let previewState = $previewWrapper.attr( 'data-preview-state' );
$previewWrapper.find( '.preview-data-wrapper ul' ).removeClass( 'active' );
if ( previewStates == 3 ) {
if ( previewState == 'closed' ) {
$previewWrapper.find( '.preview-document' ).show();
$previewWrapper.find( '.slide-right' ).show();
$previewWrapper.attr( 'data-preview-state', 'sidebar' );
$previewWrapper.attr( 'data-from-preview-state', 'closed' );
} else {
$previewWrapper.find( '.slide-left' ).hide();
$previewWrapper.find( '.sidebar' ).delay(300).hide(0);
$previewWrapper.attr( 'data-preview-state', 'full' );
$previewWrapper.attr( 'data-from-preview-state', 'sidebar' );
makePreviewScrollable( $previewWrapper );
}
} else {
$previewWrapper.find( '.preview-document' ).show();
$previewWrapper.find( '.slide-left' ).hide();
$previewWrapper.find( '.slide-right' ).show();
$previewWrapper.attr( 'data-preview-state', 'full' );
$previewWrapper.attr( 'data-from-preview-state', 'closed' );
makePreviewScrollable( $previewWrapper );
}
} );
$( '.slide-right' ).on( 'click', function() {
let previewStates = $previewWrapper.attr( 'data-preview-states' );
let previewState = $previewWrapper.attr( 'data-preview-state' );
$previewWrapper.find( '.preview-data-wrapper ul' ).removeClass( 'active' );
if ( previewStates == 3 ) {
if ( previewState == 'full' ) {
$previewWrapper.find( '.slide-left' ).delay(400).show(0);
$previewWrapper.find( '.sidebar' ).show();
$previewWrapper.attr( 'data-preview-state', 'sidebar' );
$previewWrapper.attr( 'data-from-preview-state', 'full' );
} else {
$previewWrapper.find( '.preview-document' ).hide(300);
$previewWrapper.find( '.slide-right' ).hide();
$previewWrapper.attr( 'data-preview-state', 'closed' );
$previewWrapper.attr( 'data-from-preview-state', 'sidebar' );
}
} else {
$previewWrapper.find( '.preview-document' ).hide(300);
$previewWrapper.find( '.slide-left' ).show();
$previewWrapper.find( '.slide-right' ).hide();
$previewWrapper.attr( 'data-preview-state', 'closed' );
$previewWrapper.attr( 'data-from-preview-state', 'full' );
}
$previewWrapper.removeClass( 'static' );
} );
function makePreviewScrollable( wrapper ) {
window.scrollTo( 0, 0 );
let $wrapper = wrapper;
// Make preview scrollable after panel animation is complete
setTimeout( function() {
$wrapper.addClass( 'static' );
}, 300 );
}
$( '.preview-document .preview-data p' ).on( 'click', function() {
let $previewData = $( this ).closest( '.preview-data' );
$previewData.siblings( '.preview-data' ).find( 'ul' ).removeClass( 'active' );
$previewData.find( 'ul' ).toggleClass( 'active' );
} );
$( '.preview-document .preview-data ul > li' ).on( 'click', function() {
let $previewData = $( this ).closest( '.preview-data' );
$previewData.find( 'ul' ).toggleClass( 'active' );
if ( $( this ).hasClass( 'order-search' ) ) {
$previewData.find( 'p.last-order' ).hide();
$previewData.find( 'input[name="preview-order-search"]' ).addClass( 'active' );
$previewData.find( 'p.order-search' ).show().find( '.order-search-label' ).text( $( this ).text() );
} else {
$previewData.find( 'p.last-order' ).show();
$previewData.find( 'p.order-search' ).hide();
$previewData.find( 'input[name="preview-order-search"]' ).removeClass( 'active' ).val( '' );
$previewData.find( '#preview-order-search-results' ).hide();
$previewData.find( 'img.preview-order-search-clear' ).hide(); // remove the clear button
resetOrderId() // force order ID reset
triggerPreview(); // trigger preview
}
} );
// Preview on page load
$( document ).ready( triggerPreview() );
// Custom trigger to signify settings have changed (will show save button and refresh preview)
$( document ).on( 'wpo-wcpdf-settings-changed', function( event, delay ) {
showSaveBtn();
triggerPreview( delay );
} );
// Custom trigger to refresh preview
$( document ).on( 'wpo-wcpdf-refresh-preview wpo_wcpdf_refresh_preview', function( event, delay ) {
triggerPreview( delay );
} );
// Preview on user click in search result
$( document ).on( 'click', '#preview-order-search-results a', function( event ) {
event.preventDefault();
$( '.preview-document .order-search-label').text( '#' + $( this ).data( 'order_id' ) );
$previewOrderIdInput.val( $( this ).data( 'order_id' ) ).change();
$( this ).closest( 'div' ).hide(); // hide results div
$( this ).closest( 'div' ).children( 'a' ).remove(); // remove all results
triggerPreview();
} );
// Check for settings change
$( document ).on( 'keyup paste', '#wpo-wcpdf-settings input, #wpo-wcpdf-settings textarea', settingsChanged );
$( document ).on( 'change', '#wpo-wcpdf-settings input[type="checkbox"], #wpo-wcpdf-settings input[type="radio"], #wpo-wcpdf-settings select', function( event ) {
if ( ! event.isTrigger ) { // exclude programmatic triggers that aren't actually changing anything
settingsChanged( event );
}
});
$( document ).on( 'select2:select select2:unselect', '#wpo-wcpdf-settings select.wc-enhanced-select', settingsChanged );
$( document.body ).on( 'wpo-wcpdf-media-upload-setting-updated', settingsChanged );
$( document ).on( 'click', '.wpo_remove_image_button, #wpo-wcpdf-settings .remove-requirement', settingsChanged );
function settingsChanged( event, previewDelay ) {
// Show secondary save button
showSaveBtn();
// Check if preview needs to reload and with what delay
let $element = $( event.target );
if ( ! settingIsExcludedForPreview( $element.attr('name') ) ) {
if ( $element.hasClass( 'remove-requirement' ) || $element.attr('id') == 'disable_for' ) {
return;
}
if ( jQuery.inArray( event.type, ['keyup', 'paste'] ) !== -1 ) {
if ( $element.is( 'input[type="checkbox"], select' ) ) {
return;
} else {
previewDelay = event.type == 'keyup' ? 1000 : 0;
}
}
triggerPreview( previewDelay );
}
}
function showSaveBtn( event ) {
$('.preview-data-wrapper .save-settings p').css('margin-right', '0');
}
// Submit settings form when clicking on secondary save button
$( document ).on( 'click', '.preview-data-wrapper .save-settings p input', function( event ) {
$('#wpo-wcpdf-settings input#submit').click();
} );
// Trigger the Preview
function triggerPreview( timeoutDuration ) {
timeoutDuration = typeof timeoutDuration == 'number' ? timeoutDuration : 0;
loadPreviewData();
clearTimeout( previewTimeout );
previewTimeout = setTimeout( function() { ajaxLoadPreview() }, timeoutDuration );
}
// Settings excluded from trigger the Preview
function settingIsExcludedForPreview( settingName ) {
let excluded = false;
if ( ! settingName ) {
return excluded;
}
let nameKey = settingName.includes( '[' ) ? settingName.match(/\[(.*?)\]/)[1] : settingName;
if ( $.inArray( nameKey, wpo_wcpdf_admin.preview_excluded_settings ) !== -1 ) {
excluded = true;
}
return excluded;
}
// Clear preview order search results/input
$( document ).on( 'click', 'img.preview-order-search-clear', function( event ) {
event.preventDefault();
$( this ).closest( 'div' ).find( 'input#preview-order-search' ).val( '' );
$( this ).closest( '.preview-data' ).find( '#preview-order-search-results' ).children( 'a' ).remove(); // remove previous results
$( this ).closest( '.preview-data' ).find( '#preview-order-search-results' ).children( '.error' ).remove(); // remove previous errors
$( this ).closest( '.preview-data' ).find( '#preview-order-search-results' ).hide();
$( this ).hide();
} );
// Trigger preview on document selection and change the document type input with the new value
$( '#wpo-wcpdf-preview-wrapper ul.preview-data-option-list li' ).on( 'click', function() {
let inputName = $( this ).closest( 'ul' ).data( 'input-name' );
let $input = $( '#wpo-wcpdf-preview-wrapper :input[name='+inputName+']');
$input.val( $( this ).data( 'value' ) ).trigger( 'change' );
} );
// Detect document type input changes and apply the same document title to the document selector
$previewDocumentTypeInput.on( 'change', function() {
let inputValue = $( this ).val();
if ( inputValue.length ) {
let inputName = $( this ).attr( 'name' );
let $ul = $( '#wpo-wcpdf-preview-wrapper ul.preview-data-option-list[data-input-name='+inputName+']' );
let $li = $ul.find( 'li[data-value='+inputValue+']' );
$ul.parent().find( '.current-label' ).text( $li.text() );
triggerPreview();
}
} ).trigger( 'change' );
// Detect order ID input changes
$previewOrderIdInput.on( 'change', function() {
triggerPreview();
} ).trigger( 'change' );
// Load the Preview with AJAX
function ajaxLoadPreview() {
let worker = wpo_wcpdf_admin.pdfjs_worker;
let canvasId = 'preview-canvas';
let data = {
action: 'wpo_wcpdf_preview',
security: previewNonce,
order_id: previewOrderId,
document_type: previewDocumentType,
output_format: previewOutputFormat,
data: previewSettingsFormData,
};
// remove previous error notices
$preview.children( '.notice' ).remove();
// block ui
$preview.block( {
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
} );
previewXhr = $.ajax( {
type: 'POST',
url: wpo_wcpdf_admin.ajaxurl,
data: data,
beforeSend: function( jqXHR, settings ) {
if ( previewXhr != null ) {
previewXhr.abort();
}
},
success: function( response, textStatus, jqXHR ) {
if ( response.data.error ) {
$( '#'+canvasId ).remove();
$preview.append( '<div class="notice notice-error inline"><p>'+response.data.error+'</p></div>' );
} else if ( response.data.preview_data && response.data.output_format ) {
$( '#'+canvasId ).remove();
switch ( response.data.output_format ) {
default:
case 'pdf':
$preview.append( '<canvas id="'+canvasId+'" style="width:100%;"></canvas>' );
renderPdf( worker, canvasId, response.data.preview_data );
break;
case 'ubl':
let xml = response.data.preview_data;
let xml_escaped = xml.replace( /&/g,'&amp;' ).replace( /</g,'&lt;' ).replace( />/g,'&gt;' ).replace( / /g, '&nbsp;' ).replace( /\n/g,'<br />' );
$preview.html( '<div id="preview-ubl">'+xml_escaped+'</div>' );
break;
}
}
$preview.unblock();
},
error: function( jqXHR, textStatus, errorThrown ) {
if ( textStatus != 'abort' ) {
let errorMessage = jqXHR.status + ': ' + jqXHR.statusText
$( '#'+canvasId ).remove();
$preview.append( '<div class="notice notice-error inline"><p>'+errorMessage+'</p></div>' );
$preview.unblock();
}
},
} );
}
// pdf_js (third party library code)
function renderPdf( worker, canvasId, pdfData ) {
// atob() is used to convert base64 encoded PDF to binary-like data.
// (See also https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding.)
pdfData = window.atob( pdfData );
// Loaded via <script> tag, create shortcut to access PDF.js exports.
let pdfjsLib = window['pdfjs-dist/build/pdf'];
// The workerSrc property shall be specified.
pdfjsLib.GlobalWorkerOptions.workerSrc = worker;
// Using DocumentInitParameters object to load binary data.
let loadingTask = pdfjsLib.getDocument( { data: pdfData } );
loadingTask.promise.then( function( pdf ) {
// Fetch the first page
let pageNumber = 1;
pdf.getPage( pageNumber ).then( function( page ) {
let scale = 2;
let viewport = page.getViewport( { scale: scale } );
// Prepare canvas using PDF page dimensions
let canvas = document.getElementById( canvasId );
let context = canvas.getContext( '2d' );
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
let renderContext = {
canvasContext: context,
viewport: viewport
};
let renderTask = page.render( renderContext );
renderTask.promise.then( function() {
// page rendered
} );
} );
}, function( reason ) {
// PDF loading error
console.error( reason );
} );
}
// Preview on user input
$( '#preview-order-search' ).on( 'keyup paste', function( event ) {
let $elem = $( this );
$elem.addClass( 'ajax-waiting' );
let duration = event.type == 'keyup' ? 1000 : 0;
loadPreviewData();
clearTimeout( previewSearchTimeout );
previewSearchTimeout = setTimeout( function() { previewOrderSearch( $elem ) }, duration );
} );
// Preview order search
function previewOrderSearch( $elem ) {
let $div = $elem.closest( '.preview-data' ).find( '#preview-order-search-results' );
let value = $elem.val();
let nonce = $elem.data( 'nonce' );
let action = 'wpo_wcpdf_preview_order_search';
let data = {
security: nonce,
action: action,
search: value,
document_type: previewDocumentType,
};
$div.parent().find( 'img.preview-order-search-clear' ).hide(); // hide the clear button
$div.children( '.error' ).remove(); // remove previous errors
$div.children( 'a' ).remove(); // remove previous results
$div.hide(); // hide search results
$.ajax( {
type: 'POST',
url: wpo_wcpdf_admin.ajaxurl,
data: data,
success: function( response ) {
if ( response.data ) {
if ( response.data.error ) {
$div.append( '<span class="error">'+response.data.error+'</span>' );
$div.show();
} else {
$.each( response.data, function( i, item ) {
let firstLine = '<a data-order_id="'+i+'"><span class="order-number">#'+item.order_number+'</span> - '+item.billing_first_name+' '+item.billing_last_name;
if ( item.billing_company.length > 0 ) {
firstLine = firstLine+', '+item.billing_company;
}
let secondLine = '<br><span class="date">'+item.date_created+'</span><span class="total">'+item.total+'</span></a>';
$div.append( firstLine+secondLine );
$div.show();
} );
}
}
$elem.removeClass( 'ajax-waiting' );
$elem.closest( 'div' ).find( 'img.preview-order-search-clear' ).show();
}
} );
}
//----------> /Preview <----------//
} );

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,40 @@
(() => {
"use strict";
function r(r) {
return (
(function (r) {
if (Array.isArray(r)) return e(r);
})(r) ||
(function (r) {
if (("undefined" != typeof Symbol && null != r[Symbol.iterator]) || null != r["@@iterator"]) return Array.from(r);
})(r) ||
(function (r, t) {
if (r) {
if ("string" == typeof r) return e(r, t);
var n = Object.prototype.toString.call(r).slice(8, -1);
return "Object" === n && r.constructor && (n = r.constructor.name), "Map" === n || "Set" === n ? Array.from(r) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? e(r, t) : void 0;
}
})(r) ||
(function () {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
})()
);
}
function e(r, e) {
(null == e || e > r.length) && (e = r.length);
for (var t = 0, n = new Array(e); t < e; t++) n[t] = r[t];
return n;
}
(0, wp.hooks.addFilter)("woocommerce_admin_report_table", "wpo-wc-admin-invoice-column", function (e) {
return "orders" !== e.endpoint
? e
: ((e.headers = [].concat(r(e.headers), [{ label: wpo_wcpdf_analytics_order.label, key: "order_invoice_number", screenReaderLabel: wpo_wcpdf_analytics_order.label, isSortable: !1 }])),
e.items && e.items.data && e.items.data.length
? ((e.rows = e.rows.map(function (t, n) {
var o = e.items.data[n];
return [].concat(r(t), [{ display: o.invoice_number, value: o.invoice_number }]);
})),
e)
: e);
});
})();

View File

@@ -0,0 +1 @@
(()=>{"use strict";function a(a){return function(a){if(Array.isArray(a))return b(a)}(a)||function(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}(a)||function(a,c){if(a){if("string"==typeof a)return b(a,c);var d=Object.prototype.toString.call(a).slice(8,-1);return"Object"===d&&a.constructor&&(d=a.constructor.name),"Map"===d||"Set"===d?Array.from(a):"Arguments"===d||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d)?b(a,c):void 0}}(a)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}(0,wp.hooks.addFilter)("woocommerce_admin_report_table","wpo-wc-admin-invoice-column",function(b){return"orders"===b.endpoint?(b.headers=[].concat(a(b.headers),[{label:wpo_wcpdf_analytics_order.label,key:"order_invoice_number",screenReaderLabel:wpo_wcpdf_analytics_order.label,isSortable:!1}]),b.items&&b.items.data&&b.items.data.length?(b.rows=b.rows.map(function(c,d){var e=b.items.data[d];return[].concat(a(c),[{display:e.invoice_number,value:e.invoice_number}])}),b):b):b})})();

View File

@@ -0,0 +1,42 @@
import { addFilter } from '@wordpress/hooks';
addFilter(
'woocommerce_admin_report_table',
'wpo-wc-admin-invoice-column',
(reportTableData) => {
if (reportTableData.endpoint !== 'orders') {
return reportTableData;
}
reportTableData.headers = [
...reportTableData.headers,
{
label: wpo_wcpdf_analytics_order.label,
key: 'order_invoice_number',
screenReaderLabel: wpo_wcpdf_analytics_order.label,
isSortable: false,
},
];
if (
! reportTableData.items ||
! reportTableData.items.data ||
! reportTableData.items.data.length
) {
return reportTableData;
}
reportTableData.rows = reportTableData.rows.map((row, index) => {
const order = reportTableData.items.data[index];
return [
...row,
{
display: order.invoice_number,
value: order.invoice_number,
},
];
});
return reportTableData;
}
);

View File

@@ -0,0 +1,345 @@
jQuery(document).ready(function($) {
var frameRate = 30;
var dt = 1.0 / frameRate;
var DEG_TO_RAD = Math.PI / 180;
var RAD_TO_DEG = 180 / Math.PI;
var colors = [
["#771787", "#239bb9"],
];
function Vector2(_x, _y) {
this.x = _x, this.y = _y;
this.Length = function() {
return Math.sqrt(this.SqrLength());
}
this.SqrLength = function() {
return this.x * this.x + this.y * this.y;
}
this.Equals = function(_vec0, _vec1) {
return _vec0.x == _vec1.x && _vec0.y == _vec1.y;
}
this.Add = function(_vec) {
this.x += _vec.x;
this.y += _vec.y;
}
this.Sub = function(_vec) {
this.x -= _vec.x;
this.y -= _vec.y;
}
this.Div = function(_f) {
this.x /= _f;
this.y /= _f;
}
this.Mul = function(_f) {
this.x *= _f;
this.y *= _f;
}
this.Normalize = function() {
var sqrLen = this.SqrLength();
if (sqrLen != 0) {
var factor = 1.0 / Math.sqrt(sqrLen);
this.x *= factor;
this.y *= factor;
}
}
this.Normalized = function() {
var sqrLen = this.SqrLength();
if (sqrLen != 0) {
var factor = 1.0 / Math.sqrt(sqrLen);
return new Vector2(this.x * factor, this.y * factor);
}
return new Vector2(0, 0);
}
}
Vector2.Lerp = function(_vec0, _vec1, _t) {
return new Vector2((_vec1.x - _vec0.x) * _t + _vec0.x, (_vec1.y - _vec0.y) * _t + _vec0.y);
}
Vector2.Distance = function(_vec0, _vec1) {
return Math.sqrt(Vector2.SqrDistance(_vec0, _vec1));
}
Vector2.SqrDistance = function(_vec0, _vec1) {
var x = _vec0.x - _vec1.x;
var y = _vec0.y - _vec1.y;
return (x * x + y * y + z * z);
}
Vector2.Scale = function(_vec0, _vec1) {
return new Vector2(_vec0.x * _vec1.x, _vec0.y * _vec1.y);
}
Vector2.Min = function(_vec0, _vec1) {
return new Vector2(Math.min(_vec0.x, _vec1.x), Math.min(_vec0.y, _vec1.y));
}
Vector2.Max = function(_vec0, _vec1) {
return new Vector2(Math.max(_vec0.x, _vec1.x), Math.max(_vec0.y, _vec1.y));
}
Vector2.ClampMagnitude = function(_vec0, _len) {
var vecNorm = _vec0.Normalized;
return new Vector2(vecNorm.x * _len, vecNorm.y * _len);
}
Vector2.Sub = function(_vec0, _vec1) {
return new Vector2(_vec0.x - _vec1.x, _vec0.y - _vec1.y, _vec0.z - _vec1.z);
}
function EulerMass(_x, _y, _mass, _drag) {
this.position = new Vector2(_x, _y);
this.mass = _mass;
this.drag = _drag;
this.force = new Vector2(0, 0);
this.velocity = new Vector2(0, 0);
this.AddForce = function(_f) {
this.force.Add(_f);
}
this.Integrate = function(_dt) {
var acc = this.CurrentForce(this.position);
acc.Div(this.mass);
var posDelta = new Vector2(this.velocity.x, this.velocity.y);
posDelta.Mul(_dt);
this.position.Add(posDelta);
acc.Mul(_dt);
this.velocity.Add(acc);
this.force = new Vector2(0, 0);
}
this.CurrentForce = function(_pos, _vel) {
var totalForce = new Vector2(this.force.x, this.force.y);
var speed = this.velocity.Length();
var dragVel = new Vector2(this.velocity.x, this.velocity.y);
dragVel.Mul(this.drag * this.mass * speed);
totalForce.Sub(dragVel);
return totalForce;
}
}
function ConfettiPaper(_x, _y) {
this.pos = new Vector2(_x, _y);
this.rotationSpeed = Math.random() * 600 + 800;
this.angle = DEG_TO_RAD * Math.random() * 360;
this.rotation = DEG_TO_RAD * Math.random() * 360;
this.cosA = 1.0;
this.size = 5.0;
this.oscillationSpeed = Math.random() * 1.5 + 0.5;
this.xSpeed = 40.0;
this.ySpeed = Math.random() * 60 + 50.0;
this.corners = new Array();
this.time = Math.random();
var ci = Math.round(Math.random() * (colors.length - 1));
this.frontColor = colors[ci][0];
this.backColor = colors[ci][1];
for (var i = 0; i < 4; i++) {
var dx = Math.cos(this.angle + DEG_TO_RAD * (i * 90 + 45));
var dy = Math.sin(this.angle + DEG_TO_RAD * (i * 90 + 45));
this.corners[i] = new Vector2(dx, dy);
}
this.Update = function(_dt) {
this.time += _dt;
this.rotation += this.rotationSpeed * _dt;
this.cosA = Math.cos(DEG_TO_RAD * this.rotation);
this.pos.x += Math.cos(this.time * this.oscillationSpeed) * this.xSpeed * _dt
this.pos.y += this.ySpeed * _dt;
if (this.pos.y > ConfettiPaper.bounds.y) {
this.pos.x = Math.random() * ConfettiPaper.bounds.x;
this.pos.y = 0;
}
}
this.Draw = function(_g) {
if (this.cosA > 0) {
_g.fillStyle = this.frontColor;
} else {
_g.fillStyle = this.backColor;
}
_g.beginPath();
_g.moveTo(this.pos.x + this.corners[0].x * this.size, this.pos.y + this.corners[0].y * this.size * this.cosA);
for (var i = 1; i < 4; i++) {
_g.lineTo(this.pos.x + this.corners[i].x * this.size, this.pos.y + this.corners[i].y * this.size * this.cosA);
}
_g.closePath();
_g.fill();
}
}
ConfettiPaper.bounds = new Vector2(0, 0);
function ConfettiRibbon(_x, _y, _count, _dist, _thickness, _angle, _mass, _drag) {
this.particleDist = _dist;
this.particleCount = _count;
this.particleMass = _mass;
this.particleDrag = _drag;
this.particles = new Array();
var ci = Math.round(Math.random() * (colors.length - 1));
this.frontColor = colors[ci][0];
this.backColor = colors[ci][1];
this.xOff = Math.cos(DEG_TO_RAD * _angle) * _thickness;
this.yOff = Math.sin(DEG_TO_RAD * _angle) * _thickness;
this.position = new Vector2(_x, _y);
this.prevPosition = new Vector2(_x, _y);
this.velocityInherit = Math.random() * 2 + 4;
this.time = Math.random() * 100;
this.oscillationSpeed = Math.random() * 2 + 2;
this.oscillationDistance = Math.random() * 40 + 40;
this.ySpeed = Math.random() * 40 + 80;
for (var i = 0; i < this.particleCount; i++) {
this.particles[i] = new EulerMass(_x, _y - i * this.particleDist, this.particleMass, this.particleDrag);
}
this.Update = function(_dt) {
var i = 0;
this.time += _dt * this.oscillationSpeed;
this.position.y += this.ySpeed * _dt;
this.position.x += Math.cos(this.time) * this.oscillationDistance * _dt;
this.particles[0].position = this.position;
var dX = this.prevPosition.x - this.position.x;
var dY = this.prevPosition.y - this.position.y;
var delta = Math.sqrt(dX * dX + dY * dY);
this.prevPosition = new Vector2(this.position.x, this.position.y);
for (i = 1; i < this.particleCount; i++) {
var dirP = Vector2.Sub(this.particles[i - 1].position, this.particles[i].position);
dirP.Normalize();
dirP.Mul((delta / _dt) * this.velocityInherit);
this.particles[i].AddForce(dirP);
}
for (i = 1; i < this.particleCount; i++) {
this.particles[i].Integrate(_dt);
}
for (i = 1; i < this.particleCount; i++) {
var rp2 = new Vector2(this.particles[i].position.x, this.particles[i].position.y);
rp2.Sub(this.particles[i - 1].position);
rp2.Normalize();
rp2.Mul(this.particleDist);
rp2.Add(this.particles[i - 1].position);
this.particles[i].position = rp2;
}
if (this.position.y > ConfettiRibbon.bounds.y + this.particleDist * this.particleCount) {
this.Reset();
}
}
this.Reset = function() {
this.position.y = -Math.random() * ConfettiRibbon.bounds.y;
this.position.x = Math.random() * ConfettiRibbon.bounds.x;
this.prevPosition = new Vector2(this.position.x, this.position.y);
this.velocityInherit = Math.random() * 2 + 4;
this.time = Math.random() * 100;
this.oscillationSpeed = Math.random() * 2.0 + 1.5;
this.oscillationDistance = Math.random() * 40 + 40;
this.ySpeed = Math.random() * 40 + 80;
var ci = Math.round(Math.random() * (colors.length - 1));
this.frontColor = colors[ci][0];
this.backColor = colors[ci][1];
this.particles = new Array();
for (var i = 0; i < this.particleCount; i++) {
this.particles[i] = new EulerMass(this.position.x, this.position.y - i * this.particleDist, this.particleMass, this.particleDrag);
}
}
this.Draw = function(_g) {
for (var i = 0; i < this.particleCount - 1; i++) {
var p0 = new Vector2(this.particles[i].position.x + this.xOff, this.particles[i].position.y + this.yOff);
var p1 = new Vector2(this.particles[i + 1].position.x + this.xOff, this.particles[i + 1].position.y + this.yOff);
if (this.Side(this.particles[i].position.x, this.particles[i].position.y, this.particles[i + 1].position.x, this.particles[i + 1].position.y, p1.x, p1.y) < 0) {
_g.fillStyle = this.frontColor;
_g.strokeStyle = this.frontColor;
} else {
_g.fillStyle = this.backColor;
_g.strokeStyle = this.backColor;
}
if (i == 0) {
_g.beginPath();
_g.moveTo(this.particles[i].position.x, this.particles[i].position.y);
_g.lineTo(this.particles[i + 1].position.x, this.particles[i + 1].position.y);
_g.lineTo((this.particles[i + 1].position.x + p1.x) * 0.5, (this.particles[i + 1].position.y + p1.y) * 0.5);
_g.closePath();
_g.stroke();
_g.fill();
_g.beginPath();
_g.moveTo(p1.x, p1.y);
_g.lineTo(p0.x, p0.y);
_g.lineTo((this.particles[i + 1].position.x + p1.x) * 0.5, (this.particles[i + 1].position.y + p1.y) * 0.5);
_g.closePath();
_g.stroke();
_g.fill();
} else if (i == this.particleCount - 2) {
_g.beginPath();
_g.moveTo(this.particles[i].position.x, this.particles[i].position.y);
_g.lineTo(this.particles[i + 1].position.x, this.particles[i + 1].position.y);
_g.lineTo((this.particles[i].position.x + p0.x) * 0.5, (this.particles[i].position.y + p0.y) * 0.5);
_g.closePath();
_g.stroke();
_g.fill();
_g.beginPath();
_g.moveTo(p1.x, p1.y);
_g.lineTo(p0.x, p0.y);
_g.lineTo((this.particles[i].position.x + p0.x) * 0.5, (this.particles[i].position.y + p0.y) * 0.5);
_g.closePath();
_g.stroke();
_g.fill();
} else {
_g.beginPath();
_g.moveTo(this.particles[i].position.x, this.particles[i].position.y);
_g.lineTo(this.particles[i + 1].position.x, this.particles[i + 1].position.y);
_g.lineTo(p1.x, p1.y);
_g.lineTo(p0.x, p0.y);
_g.closePath();
_g.stroke();
_g.fill();
}
}
}
this.Side = function(x1, y1, x2, y2, x3, y3) {
return ((x1 - x2) * (y3 - y2) - (y1 - y2) * (x3 - x2));
}
}
ConfettiRibbon.bounds = new Vector2(0, 0);
confetti = {};
confetti.Context = function(parent) {
var i = 0;
var canvasParent = document.getElementById(parent);
var canvas = document.createElement('canvas');
canvas.width = canvasParent.offsetWidth;
canvas.height = canvasParent.offsetHeight;
canvasParent.appendChild(canvas);
var context = canvas.getContext('2d');
var interval = null;
var confettiRibbonCount = 7;
var rpCount = 30;
var rpDist = 8.0;
var rpThick = 8.0;
var confettiRibbons = new Array();
ConfettiRibbon.bounds = new Vector2(canvas.width, canvas.height);
for (i = 0; i < confettiRibbonCount; i++) {
confettiRibbons[i] = new ConfettiRibbon(Math.random() * canvas.width, -Math.random() * canvas.height * 2, rpCount, rpDist, rpThick, 45, 1, 0.05);
}
var confettiPaperCount = 25;
var confettiPapers = new Array();
ConfettiPaper.bounds = new Vector2(canvas.width, canvas.height);
for (i = 0; i < confettiPaperCount; i++) {
confettiPapers[i] = new ConfettiPaper(Math.random() * canvas.width, Math.random() * canvas.height);
}
this.resize = function() {
canvas.width = canvasParent.offsetWidth;
canvas.height = canvasParent.offsetHeight;
ConfettiPaper.bounds = new Vector2(canvas.width, canvas.height);
ConfettiRibbon.bounds = new Vector2(canvas.width, canvas.height);
}
this.start = function() {
this.stop()
var context = this
this.interval = setInterval(function() {
confetti.update();
}, 1000.0 / frameRate)
}
this.stop = function() {
clearInterval(this.interval);
}
this.update = function() {
var i = 0;
context.clearRect(0, 0, canvas.width, canvas.height);
for (i = 0; i < confettiPaperCount; i++) {
confettiPapers[i].Update(dt);
confettiPapers[i].Draw(context);
}
for (i = 0; i < confettiRibbonCount; i++) {
confettiRibbons[i].Update(dt);
confettiRibbons[i].Draw(context);
}
}
}
var confetti = new confetti.Context('confetti');
confetti.start();
$(window).resize(function() {
confetti.resize();
});
});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,195 @@
jQuery( function( $ ) {
$( '.wpo_wcpdf_debug_tools_form a.submit' ).on( 'click', function( e ) {
e.preventDefault();
let $form = $( this ).closest( 'form' );
let tool = $form.find( 'input[name="debug_tool"]' ).val();
let formData = new FormData( $form[0] );
formData.append( 'action', 'wpo_wcpdf_debug_tools' );
formData.append( 'nonce', wpo_wcpdf_debug.nonce );
// block ui
$form.closest( '.tool' ).block( {
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
} );
let reset = false;
if ( 'reset-settings' === tool ) {
reset = window.confirm( wpo_wcpdf_debug.confirm_reset );
} else {
reset = true;
}
if ( reset ) {
$.ajax( {
url: wpo_wcpdf_debug.ajaxurl,
data: formData,
type: 'POST',
cache: false,
processData: false,
contentType: false,
success ( response ) {
process_form_response( tool, response, $form );
},
error ( xhr, error, status ) {
//console.log( error, status );
}
} );
}
$form.closest( '.tool' ).unblock();
} );
function process_form_response( tool, response, $form ) {
let $notice = $form.find( '.notice' );
$notice.hide();
$notice.removeClass( 'notice-error' );
$notice.removeClass( 'notice-success' );
switch ( tool ) {
case 'export-settings':
if ( response.success && response.data.filename && response.data.settings ) {
$form.find( '.download_file' ).remove();
let data = {
'type': $form.find( 'select[name="type"' ).val(),
'settings': response.data.settings,
}
data = 'data:text/plain;charset=utf-8,' + encodeURIComponent( JSON.stringify( data ) );
$form.append( $('<div class="download_file"><label>'+wpo_wcpdf_debug.download_label+':</label> <a href="data:' + data + '" download="'+response.data.filename+'">'+response.data.filename+'</a></div>') );
} else if ( ! response.success && response.data.message ) {
$notice.addClass( 'notice-error' );
$notice.find( 'p' ).text( response.data.message );
$notice.show();
}
break;
case 'import-settings':
case 'reset-settings':
if ( response.success && response.data.message ) {
$notice.addClass( 'notice-success' );
} else if ( ! response.success && response.data.message ) {
$notice.addClass( 'notice-error' );
}
$notice.find( 'p' ).text( response.data.message );
$notice.show();
break;
}
}
// toggle custom redirect page
$( "[name='wpo_wcpdf_settings_debug[document_access_denied_redirect_page]']" ).on( 'change', function( event ) {
let $custom_page_field = $( this ).closest( 'table' ).find( '#document_custom_redirect_page' );
let $field_description = $custom_page_field.closest( 'td' ).find( '.description' );
if ( 'custom_page' === $( this ).val() ) {
$custom_page_field.show();
$field_description.show();
} else {
$custom_page_field.hide();
$field_description.hide();
}
} ).trigger( 'change' );
// danger zone enabled notice
if ( true === wpo_wcpdf_debug.danger_zone['enabled'] ) {
let notice = '<div class="notice notice-warning inline"><p>' + wpo_wcpdf_debug.danger_zone['message'] + '</p></div>';
$( "input#enable_danger_zone_tools" ).closest( 'td' ).find( '.description' ).append( notice );
}
// number search
$( document.body ).on( 'click', '#wpo-wcpdf-settings a.number-search-button', function( e ) {
e.preventDefault();
let search_val = $( this ).closest( 'div' ).find( ':input[name="number_search_input"]' ).val();
window.location.href = window.location.href + '&s=' + search_val;
} );
// datepicker
$( '#renumber-date-from, #renumber-date-to, #delete-date-from, #delete-date-to' ).datepicker( { dateFormat: 'yy-mm-dd' } );
// danger zone tools
$( '#wpo-wcpdf-settings .number-tools-btn' ).click( function( event ) {
event.preventDefault();
let documentType = '';
let dateFrom = '';
let dateTo = '';
let deleteOrRenumber = '';
let pageCount = 1;
let documentCount = 0;
if ( 'renumber-documents-btn' === this.id ) {
documentType = $( '#renumber-document-type' ).val();
dateFrom = $( '#renumber-date-from' ).val();
dateTo = $( '#renumber-date-to' ).val();
deleteOrRenumber = 'renumber';
} else if ( 'delete-documents-btn' === this.id ) {
documentType = $( '#delete-document-type' ).val();
dateFrom = $( '#delete-date-from' ).val();
dateTo = $( '#delete-date-to' ).val();
deleteOrRenumber = 'delete';
}
if ( '' === documentType || 'undefined' === documentType ) {
alert( wpo_wcpdf_debug.select_document_type );
return;
}
if ( 'renumber' === deleteOrRenumber ) {
$( '.renumber-spinner' ).css( 'visibility', 'visible' );
} else if ( 'delete' === deleteOrRenumber ) {
$( '.delete-spinner' ).css( 'visibility', 'visible' );
}
$( '#renumber-documents-btn, #delete-documents-btn' ).attr( 'disabled', true );
$( '#renumber-document-type, #renumber-date-from, #renumber-date-to, #delete-document-type, #delete-date-from, #delete-date-to' ).prop( 'disabled', true );
// first call
renumberOrDeleteDocuments( documentType, dateFrom, dateTo, pageCount, documentCount, deleteOrRenumber );
} );
function renumberOrDeleteDocuments( documentType, dateFrom, dateTo, pageCount, documentCount, deleteOrRenumber ) {
let data = {
'action': 'wpo_wcpdf_danger_zone_tools',
'delete_or_renumber': deleteOrRenumber,
'document_type': documentType,
'date_from': dateFrom,
'date_to': dateTo,
'page_count': pageCount,
'document_count': documentCount,
'nonce': wpo_wcpdf_debug.nonce,
};
$.ajax( {
type: 'POST',
url: wpo_wcpdf_debug.ajaxurl,
data: data,
dataType: 'json',
success: function( response ) {
if ( false === response.data.finished ) {
// update page count and document count
pageCount = response.data.pageCount;
documentCount = response.data.documentCount;
// recall function
renumberOrDeleteDocuments( documentType, dateFrom, dateTo, pageCount, documentCount, deleteOrRenumber );
} else {
$( '.renumber-spinner, .delete-spinner' ).css( 'visibility', 'hidden' );
$( '#renumber-documents-btn, #delete-documents-btn' ).removeAttr( 'disabled' );
$( '#renumber-document-type, #renumber-date-from, #renumber-date-to, #delete-document-type, #delete-date-from, #delete-date-to' ).prop( 'disabled', false );
let message = response.data.message;
alert( documentCount + message );
}
},
error: function( xhr, ajaxOptions, thrownError ) {
alert( xhr.status + ':'+ thrownError );
}
} );
}
} );

View File

@@ -0,0 +1 @@
jQuery(function(a){function b(b,c,d){let e=d.find(".notice");switch(e.hide(),e.removeClass("notice-error"),e.removeClass("notice-success"),b){case"export-settings":if(c.success&&c.data.filename&&c.data.settings){d.find(".download_file").remove();let b={type:d.find("select[name=\"type\"").val(),settings:c.data.settings};b="data:text/plain;charset=utf-8,"+encodeURIComponent(JSON.stringify(b)),d.append(a("<div class=\"download_file\"><label>"+wpo_wcpdf_debug.download_label+":</label> <a href=\"data:"+b+"\" download=\""+c.data.filename+"\">"+c.data.filename+"</a></div>"))}else!c.success&&c.data.message&&(e.addClass("notice-error"),e.find("p").text(c.data.message),e.show());break;case"import-settings":case"reset-settings":c.success&&c.data.message?e.addClass("notice-success"):!c.success&&c.data.message&&e.addClass("notice-error"),e.find("p").text(c.data.message),e.show()}}function c(b,d,e,f,g,h){let i={action:"wpo_wcpdf_danger_zone_tools",delete_or_renumber:h,document_type:b,date_from:d,date_to:e,page_count:f,document_count:g,nonce:wpo_wcpdf_debug.nonce};a.ajax({type:"POST",url:wpo_wcpdf_debug.ajaxurl,data:i,dataType:"json",success:function(i){if(!1===i.data.finished)f=i.data.pageCount,g=i.data.documentCount,c(b,d,e,f,g,h);else{a(".renumber-spinner, .delete-spinner").css("visibility","hidden"),a("#renumber-documents-btn, #delete-documents-btn").removeAttr("disabled"),a("#renumber-document-type, #renumber-date-from, #renumber-date-to, #delete-document-type, #delete-date-from, #delete-date-to").prop("disabled",!1);let b=i.data.message;alert(g+b)}},error:function(a,b,c){alert(a.status+":"+c)}})}if(a(".wpo_wcpdf_debug_tools_form a.submit").on("click",function(c){c.preventDefault();let d=a(this).closest("form"),e=d.find("input[name=\"debug_tool\"]").val(),f=new FormData(d[0]);f.append("action","wpo_wcpdf_debug_tools"),f.append("nonce",wpo_wcpdf_debug.nonce),d.closest(".tool").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});let g=!1;g="reset-settings"!==e||window.confirm(wpo_wcpdf_debug.confirm_reset),g&&a.ajax({url:wpo_wcpdf_debug.ajaxurl,data:f,type:"POST",cache:!1,processData:!1,contentType:!1,success(a){b(e,a,d)},error(){}}),d.closest(".tool").unblock()}),a("[name='wpo_wcpdf_settings_debug[document_access_denied_redirect_page]']").on("change",function(){let b=a(this).closest("table").find("#document_custom_redirect_page"),c=b.closest("td").find(".description");"custom_page"===a(this).val()?(b.show(),c.show()):(b.hide(),c.hide())}).trigger("change"),!0===wpo_wcpdf_debug.danger_zone.enabled){let b="<div class=\"notice notice-warning inline\"><p>"+wpo_wcpdf_debug.danger_zone.message+"</p></div>";a("input#enable_danger_zone_tools").closest("td").find(".description").append(b)}a(document.body).on("click","#wpo-wcpdf-settings a.number-search-button",function(b){b.preventDefault();let c=a(this).closest("div").find(":input[name=\"number_search_input\"]").val();window.location.href=window.location.href+"&s="+c}),a("#renumber-date-from, #renumber-date-to, #delete-date-from, #delete-date-to").datepicker({dateFormat:"yy-mm-dd"}),a("#wpo-wcpdf-settings .number-tools-btn").click(function(b){b.preventDefault();let d="",e="",f="",g="";return"renumber-documents-btn"===this.id?(d=a("#renumber-document-type").val(),e=a("#renumber-date-from").val(),f=a("#renumber-date-to").val(),g="renumber"):"delete-documents-btn"===this.id&&(d=a("#delete-document-type").val(),e=a("#delete-date-from").val(),f=a("#delete-date-to").val(),g="delete"),""===d||"undefined"===d?void alert(wpo_wcpdf_debug.select_document_type):void("renumber"===g?a(".renumber-spinner").css("visibility","visible"):"delete"===g&&a(".delete-spinner").css("visibility","visible"),a("#renumber-documents-btn, #delete-documents-btn").attr("disabled",!0),a("#renumber-document-type, #renumber-date-from, #renumber-date-to, #delete-document-type, #delete-date-from, #delete-date-to").prop("disabled",!0),c(d,e,f,1,0,g))})});

View File

@@ -0,0 +1,92 @@
// Thanks to Mike Jolley!
// http://mikejolley.com/2012/12/using-the-new-wordpress-3-5-media-uploader-in-plugins/
jQuery(document).ready(function($) {
// Uploading files
var file_frame;
$( '#wpo-wcpdf-settings, .wpo-wcpdf-setup' ).on( 'click', '.wpo_upload_image_button', function( event ){
event.preventDefault();
// get input wrapper
let $settings_wrapper = $(this).parent();
// If the media frame already exists, reopen it.
if ( file_frame ) {
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: $( this ).data( 'uploader_title' ),
button: {
text: $( this ).data( 'uploader_button_text' ),
},
multiple: false // Set to true to allow multiple files to be selected
});
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
// get target elements
let $input = $settings_wrapper.find( 'input.media-upload-id' );
let $preview = $settings_wrapper.find( 'img.media-upload-preview' );
// We set multiple to false so only get one image from the uploader
let attachment = file_frame.state().get( 'selection' ).first().toJSON();
// set the value of the input field to the attachment id and set the image until we have an ajax response
$input.val( attachment.id );
if ( $preview.length ) {
$preview.attr( 'src', attachment.url );
}
$( '.attachment-resolution, .attachment-resolution-warning' ).remove();
// dim until we have a response
$settings_wrapper.css( 'opacity', '0.25' );
let data = {
security: $input.data( 'ajax_nonce' ),
action: 'wpo_wcpdf_get_media_upload_setting_html',
args: $input.data( 'settings_callback_args' ),
attachment_id: attachment.id,
};
xhr = $.ajax({
type: 'POST',
url: wpo_wcpdf_admin.ajaxurl,
data: data,
success: function( response ) {
if ( response && typeof response.success != 'undefined' && response.success === true ) {
$settings_wrapper.html( response.data );
}
$settings_wrapper.removeAttr( 'style' );
// custom trigger
$input = $settings_wrapper.find( 'input.media-upload-id' );
$( document.body ).trigger( 'wpo-wcpdf-media-upload-setting-updated', [ $input ] );
},
error: function (xhr, ajaxOptions, thrownError) {
$settings_wrapper.removeAttr( 'style' );
}
});
});
// Finally, open the modal
file_frame.open();
});
$( '#wpo-wcpdf-settings, .wpo-wcpdf-setup' ).on( 'click', '.wpo_remove_image_button', function( event ){
// get source & target elements
let $settings_wrapper = $(this).parent();
let $input = $settings_wrapper.find( 'input.media-upload-id' );
let $preview = $settings_wrapper.find( 'img.media-upload-preview' );
// clear all inputs & warnings
$input.val( '' );
$preview.remove();
$( this ).remove();
$( '.attachment-resolution, .attachment-resolution-warning' ).remove();
});
});

View File

@@ -0,0 +1 @@
jQuery(document).ready(function(a){var b;a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_upload_image_button",function(c){c.preventDefault();let d=a(this).parent();return b?void b.open():void(b=wp.media.frames.file_frame=wp.media({title:a(this).data("uploader_title"),button:{text:a(this).data("uploader_button_text")},multiple:!1}),b.on("select",function(){let c=d.find("input.media-upload-id"),e=d.find("img.media-upload-preview"),f=b.state().get("selection").first().toJSON();c.val(f.id),e.length&&e.attr("src",f.url),a(".attachment-resolution, .attachment-resolution-warning").remove(),d.css("opacity","0.25");let g={security:c.data("ajax_nonce"),action:"wpo_wcpdf_get_media_upload_setting_html",args:c.data("settings_callback_args"),attachment_id:f.id};xhr=a.ajax({type:"POST",url:wpo_wcpdf_admin.ajaxurl,data:g,success:function(b){b&&"undefined"!=typeof b.success&&!0===b.success&&d.html(b.data),d.removeAttr("style"),c=d.find("input.media-upload-id"),a(document.body).trigger("wpo-wcpdf-media-upload-setting-updated",[c])},error:function(){d.removeAttr("style")}})}),b.open())}),a("#wpo-wcpdf-settings, .wpo-wcpdf-setup").on("click",".wpo_remove_image_button",function(){let b=a(this).parent(),c=b.find("input.media-upload-id"),d=b.find("img.media-upload-preview");c.val(""),d.remove(),a(this).remove(),a(".attachment-resolution, .attachment-resolution-warning").remove()})});

View File

@@ -0,0 +1,12 @@
jQuery( function( $ ) {
$('a').each(function(e){
// check if href attribute exists
if ( $(this).attr('href') ) {
// for lack of specific classes on the my account action buttons we check the url.
// 'generate_wpo_wcpdf' can be replaced when using the pretty links setting from the status page.
if( $(this).attr('href').indexOf('generate_wpo_wcpdf') != -1 ){
$(this).attr('target', '_blank');
};
}
});
});

View File

@@ -0,0 +1 @@
jQuery(function(a){a("a").each(function(){a(this).attr("href")&&-1!=a(this).attr("href").indexOf("generate_wpo_wcpdf")&&a(this).attr("target","_blank")})});

View File

@@ -0,0 +1,191 @@
jQuery( function( $ ) {
$( '#doaction, #doaction2' ).on( 'click', function( e ) {
let actionselected = $( this ).attr( "id" ).substr( 2 );
let action = $( 'select[name="' + actionselected + '"]' ).val();
if ( $.inArray( action, wpo_wcpdf_ajax.bulk_actions ) !== -1 ) {
e.preventDefault();
let template = action;
let checked = [];
let ubl_output = false;
// is UBL action
if ( action.indexOf( 'ubl' ) != -1 ) {
template = template.replace( '_ubl', '' );
ubl_output = true;
}
$( 'tbody th.check-column input[type="checkbox"]:checked' ).each(
function() {
checked.push( $( this ).val() );
}
);
if ( ! checked.length ) {
alert( wpo_wcpdf_ajax.select_orders );
return;
}
let partial_url = '';
let full_url = '';
if ( wpo_wcpdf_ajax.ajaxurl.indexOf ("?" ) != -1 ) {
partial_url = wpo_wcpdf_ajax.ajaxurl+'&action=generate_wpo_wcpdf&document_type='+template+'&bulk&_wpnonce='+wpo_wcpdf_ajax.nonce;
} else {
partial_url = wpo_wcpdf_ajax.ajaxurl+'?action=generate_wpo_wcpdf&document_type='+template+'&bulk&_wpnonce='+wpo_wcpdf_ajax.nonce;
}
// ubl
if ( ubl_output ) {
$.each( checked, function( i, order_id ) {
full_url = partial_url + '&order_ids='+order_id+'&output=ubl';
window.open( full_url, '_blank' );
} );
// pdf
} else {
let order_ids = checked.join( 'x' );
full_url = partial_url + '&order_ids='+order_ids;
window.open( full_url, '_blank' );
}
}
} );
if ( wpo_wcpdf_ajax.sticky_document_data_metabox ) {
$( '#wpo_wcpdf-data-input-box' ).insertAfter('#woocommerce-order-data');
}
// enable invoice number edit if user initiated
$( '#wpo_wcpdf-data-input-box' ).on( 'click', '.wpo-wcpdf-set-date-number, .wpo-wcpdf-edit-date-number, .wpo-wcpdf-edit-document-notes', function() {
let $form = $(this).closest('.wcpdf-data-fields-section');
if ( $form.length == 0 ) { // no section, take overall wrapper
$form = $(this).closest('.wcpdf-data-fields');
}
let edit = $(this).data( 'edit' );
// check visibility
toggle_edit_mode( $form, edit );
} );
// cancel edit
$( '#wpo_wcpdf-data-input-box' ).on( 'click', '.wpo-wcpdf-cancel', function() {
let $form = $(this).closest('.wcpdf-data-fields');
toggle_edit_mode( $form );
} );
// save, regenerate and delete document
$( '#wpo_wcpdf-data-input-box' ).on( 'click', '.wpo-wcpdf-save-document, .wpo-wcpdf-regenerate-document, .wpo-wcpdf-delete-document', function( e ) {
e.preventDefault();
let $form = $(this).closest('.wcpdf-data-fields');
let action = $(this).data('action');
let nonce = $(this).data('nonce');
let data = $form.data();
let serialized = $form.find(":input:visible:not(:disabled)").serialize();
// regenerate specific
if( action == 'regenerate' ) {
if ( window.confirm( wpo_wcpdf_ajax.confirm_regenerate ) === false ) {
return; // having second thoughts
}
$form.find('.wpo-wcpdf-regenerate-document').addClass('wcpdf-regenerate-spin');
// delete specific
} else if( action == 'delete' ) {
if ( window.confirm( wpo_wcpdf_ajax.confirm_delete ) === false ) {
return; // having second thoughts
}
// hide regenerate button
$form.find('.wpo-wcpdf-regenerate-document').hide();
}
// block ui
$form.block( {
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
} );
// request
$.ajax( {
url: wpo_wcpdf_ajax.ajaxurl,
data: {
action: 'wpo_wcpdf_'+action+'_document',
security: nonce,
form_data: serialized,
order_id: data.order_id,
document_type: data.document,
action_type: action,
wpcdf_document_data_notice: action+'d',
},
type: 'POST',
context: $form,
success: function( response ) {
toggle_edit_mode( $form );
// update document DOM data
$form.closest('#wpo_wcpdf-data-input-box').load( document.URL + ' #wpo_wcpdf-data-input-box .postbox-header, #wpo_wcpdf-data-input-box .inside', function() {
let notice_type;
if( response.success ) {
notice_type = 'success';
} else {
notice_type = 'error';
}
$(this).find( ".wcpdf-data-fields[data-document='" + data.document +"'][data-order_id='" + data.order_id +"']" ).before( '<div class="notice notice-'+notice_type+' inline" style="margin:0 10px 10px 10px;"><p>'+response.data.message+'</p></div>' );
});
if( action == 'regenerate' ) {
$form.find('.wpo-wcpdf-regenerate-document').removeClass('wcpdf-regenerate-spin');
toggle_edit_mode( $form );
}
// unblock ui
$form.unblock();
}
} );
} );
function toggle_edit_mode( $form, mode = null ) {
// check visibility
if( $form.find(".read-only").is(":visible") ) {
if( mode == 'notes' ) {
$form.find('.editable-notes :input').attr('disabled', false);
} else {
$form.find(".editable").show();
$form.find(':input').attr('disabled', false);
}
$form.find(".read-only").hide();
$form.find(".editable-notes").show();
$form.closest('.wcpdf-data-fields').find('.wpo-wcpdf-document-buttons').show();
} else {
$form.find(".read-only").show();
$form.find(".editable").hide();
$form.find(".editable-notes").hide();
$form.find(':input').attr('disabled', true);
$form.closest('.wcpdf-data-fields').find('.wpo-wcpdf-document-buttons').hide();
}
}
$( '#wpo_wcpdf-data-input-box' ).on( 'click', '.view-more, .hide-details', function( e ) {
e.preventDefault();
$( this ).hide();
$( '.pdf-more-details' ).slideToggle( 'slow' );
if ( $( this ).hasClass( 'view-more' ) ) {
$( '.hide-details' ).show();
} else {
$( '.view-more' ).show();
}
} );
} );

View File

@@ -0,0 +1 @@
jQuery(function(a){function b(a,b=null){a.find(".read-only").is(":visible")?("notes"==b?a.find(".editable-notes :input").attr("disabled",!1):(a.find(".editable").show(),a.find(":input").attr("disabled",!1)),a.find(".read-only").hide(),a.find(".editable-notes").show(),a.closest(".wcpdf-data-fields").find(".wpo-wcpdf-document-buttons").show()):(a.find(".read-only").show(),a.find(".editable").hide(),a.find(".editable-notes").hide(),a.find(":input").attr("disabled",!0),a.closest(".wcpdf-data-fields").find(".wpo-wcpdf-document-buttons").hide())}a("#doaction, #doaction2").on("click",function(b){let c=a(this).attr("id").substr(2),d=a("select[name=\""+c+"\"]").val();if(-1!==a.inArray(d,wpo_wcpdf_ajax.bulk_actions)){b.preventDefault();let c=d,e=[],f=!1;if(-1!=d.indexOf("ubl")&&(c=c.replace("_ubl",""),f=!0),a("tbody th.check-column input[type=\"checkbox\"]:checked").each(function(){e.push(a(this).val())}),!e.length)return void alert(wpo_wcpdf_ajax.select_orders);let g="",h="";if(g=-1==wpo_wcpdf_ajax.ajaxurl.indexOf("?")?wpo_wcpdf_ajax.ajaxurl+"?action=generate_wpo_wcpdf&document_type="+c+"&bulk&_wpnonce="+wpo_wcpdf_ajax.nonce:wpo_wcpdf_ajax.ajaxurl+"&action=generate_wpo_wcpdf&document_type="+c+"&bulk&_wpnonce="+wpo_wcpdf_ajax.nonce,f)a.each(e,function(a,b){h=g+"&order_ids="+b+"&output=ubl",window.open(h,"_blank")});else{let a=e.join("x");h=g+"&order_ids="+a,window.open(h,"_blank")}}}),wpo_wcpdf_ajax.sticky_document_data_metabox&&a("#wpo_wcpdf-data-input-box").insertAfter("#woocommerce-order-data"),a("#wpo_wcpdf-data-input-box").on("click",".wpo-wcpdf-set-date-number, .wpo-wcpdf-edit-date-number, .wpo-wcpdf-edit-document-notes",function(){let c=a(this).closest(".wcpdf-data-fields-section");0==c.length&&(c=a(this).closest(".wcpdf-data-fields"));let d=a(this).data("edit");b(c,d)}),a("#wpo_wcpdf-data-input-box").on("click",".wpo-wcpdf-cancel",function(){let c=a(this).closest(".wcpdf-data-fields");b(c)}),a("#wpo_wcpdf-data-input-box").on("click",".wpo-wcpdf-save-document, .wpo-wcpdf-regenerate-document, .wpo-wcpdf-delete-document",function(c){c.preventDefault();let d=a(this).closest(".wcpdf-data-fields"),e=a(this).data("action"),f=a(this).data("nonce"),g=d.data(),h=d.find(":input:visible:not(:disabled)").serialize();if("regenerate"==e){if(!1===window.confirm(wpo_wcpdf_ajax.confirm_regenerate))return;d.find(".wpo-wcpdf-regenerate-document").addClass("wcpdf-regenerate-spin")}else if("delete"==e){if(!1===window.confirm(wpo_wcpdf_ajax.confirm_delete))return;d.find(".wpo-wcpdf-regenerate-document").hide()}d.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.ajax({url:wpo_wcpdf_ajax.ajaxurl,data:{action:"wpo_wcpdf_"+e+"_document",security:f,form_data:h,order_id:g.order_id,document_type:g.document,action_type:e,wpcdf_document_data_notice:e+"d"},type:"POST",context:d,success:function(c){b(d),d.closest("#wpo_wcpdf-data-input-box").load(document.URL+" #wpo_wcpdf-data-input-box .postbox-header, #wpo_wcpdf-data-input-box .inside",function(){let b;b=c.success?"success":"error",a(this).find(".wcpdf-data-fields[data-document='"+g.document+"'][data-order_id='"+g.order_id+"']").before("<div class=\"notice notice-"+b+" inline\" style=\"margin:0 10px 10px 10px;\"><p>"+c.data.message+"</p></div>")}),"regenerate"==e&&(d.find(".wpo-wcpdf-regenerate-document").removeClass("wcpdf-regenerate-spin"),b(d)),d.unblock()}})}),a("#wpo_wcpdf-data-input-box").on("click",".view-more, .hide-details",function(b){b.preventDefault(),a(this).hide(),a(".pdf-more-details").slideToggle("slow"),a(this).hasClass("view-more")?a(".hide-details").show():a(".view-more").show()})});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,19 @@
jQuery( function( $ ) {
$( '.tab' ).on( 'click', function() {
$( this ).closest('.extra-field').find('.tab').removeClass( 'active' );
$( this ).addClass( 'active' );
var $language = $( this ).attr('id');
$( this ).siblings('.extra-field-input').hide();
$('.' + $language ).show();
});
// Show Preview of logo
$('#file-upload').on( 'change', function(event) {
if ( event.target.files[0] ) {
var tmppath = URL.createObjectURL(event.target.files[0]);
$( '#logo-preview' ).find( "img" ).attr( 'src',tmppath );
}
});
});

View File

@@ -0,0 +1 @@
jQuery(function(a){a(".tab").on("click",function(){a(this).closest(".extra-field").find(".tab").removeClass("active"),a(this).addClass("active");var b=a(this).attr("id");a(this).siblings(".extra-field-input").hide(),a("."+b).show()}),a("#file-upload").on("change",function(b){if(b.target.files[0]){var c=URL.createObjectURL(b.target.files[0]);a("#logo-preview").find("img").attr("src",c)}})});