Files
Jacek Pyziak 4897ef132a Enhance product management and coupon features
- Added styling for input group add-ons and additional fields in SCSS.
- Updated shop coupon view to include a new column for usage count.
- Display coupon code and amount in order details if applicable.
- Improved product edit template to handle custom fields with required validation.
- Modified product save logic to include custom field requirements.
- Enhanced decimal normalization function for better input handling.
- Implemented checkbox normalization for form submissions.
- Updated custom fields in product templates to reflect required status.
- Fixed URL for fetching changelog updates.
2025-08-19 20:35:24 +02:00

1125 lines
34 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
function g_validate_form( id )
{
var submit = true;
jQuery( '#fg-' + id ).find( "input[type=text], input[type=password], select, textarea" ).each( function()
{
var min = parseInt( jQuery( this ).attr( 'min' ) );
var equal = jQuery( this ).attr( 'equal' );
var fun = jQuery( this ).attr( 'function' );
var email = jQuery( this ).attr( 'email' );
jQuery( this ).parents( '.form-group' ).removeClass( 'has-error' );
jQuery( this ).next( 'span.g-error' ).remove();
if ( jQuery( this ).hasClass( 'require' ) || jQuery( this ).hasClass( 'optional' ) )
{
if ( !isNaN( min ) && jQuery.trim( jQuery( this ).val() ).length < min && jQuery.trim( jQuery( this ).val() ) !== '' )
{
submit = false;
jQuery( this ).parents( '.form-group' ).addClass( 'has-error' );
jQuery( this ).after( '<span class="g-error text-danger mt5"><small>Wypełnione pole jest zbyt krótkie (min. ' + min + ' znaków).</small></span>' );
}
else if ( equal !== undefined && jQuery( this ).val() !== jQuery( '#' + equal ).val() )
{
submit = false;
jQuery( this ).parents( '.form-group' ).addClass( 'has-error' );
jQuery( this ).after( '<span class="g-error text-danger mt5"><small>' + jQuery( this ).attr( 'error_txt' ) + '</small></span>' );
}
else if ( jQuery( this ).hasClass( 'require' ) && ( jQuery.trim( jQuery( this ).val() ) === '' || jQuery( this ).val() === 'null' ) )
{
submit = false;
jQuery( this ).parents( '.form-group' ).addClass( 'has-error' );
jQuery( this ).after( '<span class="g-error text-danger mt5"><small>To pole jest wymagane.</small></span>' );
}
else if ( fun !== undefined )
{
var response = window[fun]();
if ( response['status'] === 'error' )
{
submit = false;
jQuery( this ).parents( '.form-group' ).addClass( 'has-error' );
jQuery( this ).after( '<span class="g-error text-danger mt5"><small>' + response['msg'] + '</small></span>' );
}
}
else if ( email !== undefined )
{
if ( isEmail( jQuery( this ).val() ) === false )
{
submit = false;
jQuery( this ).parents( '.form-group' ).addClass( 'has-error' );
jQuery( this ).after( '<span class="g-error text-danger mt5"><small>' + jQuery( this ).attr( 'error_txt' ) + '</small></span>' );
}
}
}
});
return submit;
}
function number_format( number, decimals, dec_point, thousands_sep )
{
number = ( number + '' ).replace( /[^0-9+\-Ee.]/g, '' );
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
}
function isEmail( email ) {
var regex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
return regex.test( email );
}
function create_error( text ) {
jQuery( '#content' ).prepend( '<div class="row">' +
'<div class="col col-xs-12">' +
'<div class="alert alert-danger alert-dismissable">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' +
'<i class="fa fa-info pr10"></i>' +
text +
'</div>' +
'</div>' );
hide_error();
}
function hide_error() {
setTimeout( function() {
jQuery( "button.close" ).trigger( "click" );
}, 3000 );
}
function create_message( text )
{
hide_message();
jQuery( '#content' ).prepend( '<div class="row">' +
'<div class="col col-xs-12">' +
'<div class="alert alert-primary alert-dismissable">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' +
'<i class="fa fa-info pr10"></i>' +
text +
'</div>' +
'</div>' );
}
function hide_message() {
jQuery( "button.close" ).trigger( "click" );
}
function getCheckedIds( table ) {
var checkedVals = jQuery( '#g-' + table + ' .g-checkbox:checked' ).map(function() {
return this.value;
}).get();
checkedVals.join( "," );
return checkedVals;
}
jQuery( 'body' ).on( 'click', '#g-message, #g-alert', function() {
jQuery( this ).remove();
});
jQuery( 'body' ).on( 'change', '.g-double', function() {
var value = jQuery( this ).val();
value = parseFloat( value.replace( ',', '.' ) * 1 );
if ( isNaN( value ) )
value = 0;
if ( jQuery( this ).hasClass( 'g-plus' ) )
value = Math.abs( value );
value = number_format( value , 2 , '.' , '' );
jQuery( this ).val( value );
});
jQuery( 'body' ).on( 'mouseover', '.g-tip', function() {
jQuery( this ).tooltipster({
contentAsHTML: true,
position: 'bottom-left',
theme: 'tooltipster-punk'
});
jQuery( this ).tooltipster( 'show' );
});
jQuery.datepicker.regional['pl'] = {
closeText: 'Zamknij',
prevText: '&#x3c;Poprzedni',
nextText: 'Następny&#x3e;',
currentText: 'Dziś',
monthNames: [ 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień' ],
monthNamesShort: [ 'Sty', 'Lu', 'Mar', 'Kw', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Pa', 'Lis', 'Gru' ],
dayNames: [ 'Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota' ],
dayNamesShort: [ 'Nie', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'So' ],
dayNamesMin: [ 'N', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So' ],
weekHeader: 'Tydz',
dateFormat: 'dd.mm.yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
jQuery.datepicker.setDefaults( jQuery.datepicker.regional[ 'pl' ] );
jQuery( 'body' ).on( 'focus', '.g-date', function() {
jQuery( this ).datepicker( {
dateFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true
} );
});
jQuery( 'body' ).on( 'click', 'a.g-expand', function() {
jQuery( this ).parents( '.g-form-edit' ).children( '.g-content' ).slideDown( 'fast' );
jQuery( this ).children( 'i' ).removeClass( 'fa-chevron-down' ).addClass( 'fa-chevron-up' );
jQuery( this ).removeClass( 'g-expand' ).addClass( 'g-collapse' );
});
jQuery( 'body' ).on( 'click', '.g-collapse', function() {
jQuery( this ).parents( '.g-form-edit' ).children( '.g-content' ).slideUp( 'fast' );
jQuery( this ).children( 'i' ).removeClass( 'fa-chevron-up' ).addClass( 'fa-chevron-down' );
jQuery( this ).removeClass( 'g-collapse' ).addClass( 'g-expand' );
});
jQuery( 'body' ).on( 'click', '#g-columns-list-close', function()
{
jQuery( '#g-select-columns' ).show();
jQuery( "#g-columns-list-close" ).hide();
return false;
});
jQuery( 'body' ).on( 'click', '#g-select-columns', function()
{
jQuery( '#g-select-columns' ).hide();
jQuery( "#g-columns-list-close" ).show();
jQuery( '#g-columns-list' ).show();
return false;
});
jQuery( '.g-column-toggle' ).on( 'ifToggled', function()
{
var data = jQuery( this ).parents( '#g-columns-list' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index )
{
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
var i = jQuery( this ).parents( 'li' ).attr( 'i' );
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
column: i,
hidden: !jQuery( this ).prop( 'checked' ),
a: 'gdraw'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data );
jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( response.msg !== null )
create_message( response.msg );
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});
jQuery( 'body' ).on( 'click', '#g-columns-list span', function() {
var input = jQuery( this ).attr( 'input' );
jQuery( '#' + input ).iCheck( 'toggle' );
});
jQuery( 'body' ).on( 'click', '.g-csv', function() {
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
};
window.open( dir + '/get.php?t=csv&gtable=' + gtable, 'Drukowanie', "height=400,width=600" );
});
jQuery( 'body' ).on( 'click', '.g-print', function() {
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
};
window.open( dir + '/print.php?gtable=' + gtable, 'Drukowanie', "height=400,width=600" );
});
jQuery( 'body' ).on( 'click', '#g-multidelete', function()
{
var url = jQuery( this ).attr( 'url' );
if ( typeof url === 'undefined' )
url = '';
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index )
{
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
jQuery.prompt( 'Na pewno chcesz usunąć wybrane elementy?',
{
title: 'Potwierdź?',
submit: function(e,v,m,f)
{
if ( v === true )
{
var checkedVals = getCheckedIds( gtable );
if ( url !== '' )
{
jQuery.ajax(
{
type: 'POST',
cache: false,
url: url,
data:
{
gdelete_multi: checkedVals
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data );
if ( response.status === 'ok' )
{
if ( response.msg !== null )
create_message( response.msg );
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data:
{
gtable: gtable,
a: 'gdraw'
},
success: function( data )
{
response = jQuery.parseJSON( data );
jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( response.msg !== null )
create_message( response.msg );
jQuery( '#g-multidelete' ).hide();
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
else
{
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data:
{
gtable: gtable,
gdelete_multi: checkedVals,
a: 'gdraw'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data );
jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( response.msg !== null )
create_message( response.msg );
jQuery( '#g-multidelete' ).hide();
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
}
},
buttons: {
'tak': true,
'nie': false
},
focus: 1
});
return false;
});
jQuery( 'body' ).on( 'click', '#g-cancel', function() {
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
jQuery.ajax({
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
a: 'gdraw'
},
beforeSend: function() {
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-add, #g-search, .g-button, #g-select-columns' ).show();
jQuery( '#g-cancel, #g-save' ).hide();
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});
jQuery( 'body' ).on( 'click', '#g-save, #g-edit-save', function()
{
var back_url = jQuery( this ).attr( 'back_url' );
var persist_edit = jQuery( this ).attr( 'persist_edit' );
var id_param = jQuery( this ).attr( 'id_param' );
if ( typeof back_url === 'undefined' )
back_url = '';
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index )
{
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
if ( g_validate_form( gtable ) === true )
{
var values = jQuery( '#fg-' + gtable ).serializeArray();
var formattedValues = {};
jQuery.each(values, function(i, field) {
var fieldName = field.name.replace(/\[\]$/, ''); // usuwa [] na końcu, aby traktować jako jedną tablicę
var nestedFieldMatch = fieldName.match(/^(.+?)\[(.+?)\]$/); // dopasowuje pola z zagnieżdżeniem, np. title[pl]
if (nestedFieldMatch) {
// Obsługa zagnieżdżonych pól, takich jak title[pl] lub title[en]
var mainField = nestedFieldMatch[1];
var subField = nestedFieldMatch[2];
if (!formattedValues[mainField]) {
formattedValues[mainField] = {};
}
formattedValues[mainField][subField] = field.value;
} else if (field.name.endsWith('[]')) {
// Obsługa pól tablicowych, takich jak categories[]
if (!formattedValues[fieldName]) {
formattedValues[fieldName] = [];
}
formattedValues[fieldName].push(field.value);
} else {
// Obsługa pojedynczych pól
formattedValues[fieldName] = field.value;
}
});
/* === UNIWERSALNA NORMALIZACJA CHECKBOXÓW TABLICOWYCH ===
Dla wszystkich input[type=checkbox] z name="coś[]":
- jeśli wartości są typu boolean ('', '1', 'on', 'true', 'yes') → zbuduj pełną tablicę 1/0 w kolejności DOM,
tak aby indeksy były ciągłe [0..N-1] nawet gdy część jest odznaczona.
- jeśli to lista wyboru (np. categories[] z różnymi ID) → pozostaw jak z serializeArray (tylko zaznaczone).
*/
(function normalizeCheckboxArrays() {
var $form = jQuery('#fg-' + gtable);
if (!$form.length) return;
// zgrupuj checkboxy po pełnej nazwie (z [] na końcu)
var groups = {};
$form.find('input[type="checkbox"][name$="[]"]').each(function () {
var n = this.name; // np. "required[]", "visible[]", "categories[]"
(groups[n] = groups[n] || []).push(this);
});
Object.keys(groups).forEach(function (nameWithBrackets) {
var inputs = groups[nameWithBrackets];
if (!inputs.length) return;
// sprawdź, czy wszystkie wartości wyglądają „booleanowo”
var uniqVals = Array.from(new Set(inputs.map(function (el) {
return (el.getAttribute('value') || '').toLowerCase();
})));
var boolSet = new Set(['', '1', 'on', 'true', 'yes']);
var isBooleanLike = uniqVals.every(function (v) { return boolSet.has(v); });
if (isBooleanLike) {
var baseKey = nameWithBrackets.replace(/\[\]$/, ''); // usuń [] → "required", "visible"
// pełna tablica 1/0 w kolejności w formularzu
formattedValues[baseKey] = inputs.map(function (el) { return el.checked ? '1' : '0'; });
}
// else: zostawiamy formattedValues tak jak już zbudowane z serializeArray()
});
})();
var url = jQuery( this ).attr( 'url' );
if ( url !== '' )
{
jQuery.ajax(
{
type: 'POST',
cache: false,
url: url,
data:
{
gtable: gtable,
values: JSON.stringify(formattedValues),
a: 'gsave'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
jQuery( '#overlay' ).show();
},
success: function( data )
{
jQuery( '#overlay' ).hide();
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( back_url !== '' && persist_edit == 0 )
document.location.href = back_url;
else if ( persist_edit == 0 )
{
if ( response.msg !== null )
create_message( response.msg );
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data:
{
gtable: gtable,
a: 'gdraw'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-add, #g-search, .g-button' ).show();
jQuery( '#g-cancel, #g-save' ).hide();
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
else
{
if ( response.msg !== null )
create_message( response.msg );
if ( id_param != '' )
jQuery( '#' + id_param ).val( response.id );
}
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
else
{
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data:
{
gtable: gtable,
values: JSON.stringify( formattedValues ),
a: 'gsave'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( back_url !== '' )
{
document.location.href=back_url;
}
else
{
if ( response.msg !== null )
create_message( response.msg );
jQuery( '#g-add, #g-search, .g-button' ).show();
jQuery( '#g-cancel, #g-save' ).hide();
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
};
});
jQuery( 'body' ).on( 'click', '#g-add, .g-edit', function() {
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
var gedit = jQuery( this ).attr( 'element-id' );
jQuery.ajax({
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
gedit: gedit,
a: 'gedit'
},
beforeSend: function() {
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-add, #g-search, .g-button, #g-select-columns' ).hide();
jQuery( '#g-cancel, #g-save' ).css( 'display', 'inline-block' );
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});
jQuery( 'body' ).on( 'click', '.g-delete', function()
{
jQuery( this ).blur();
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
var gdelete = jQuery( this ).attr( 'element-id' );
var back_url = jQuery( this ).attr( 'back-url' );
var url = jQuery( this ).attr( 'url' ).replace( '[ID]', gdelete );
jQuery.prompt( 'Na pewno chcesz usunąć wybrany element?',
{
title: 'Potwierdź?',
submit: function(e,v,m,f)
{
if ( v === true )
{
if ( url !== '' )
{
jQuery.ajax(
{
type: 'POST',
cache: false,
url: url,
data:
{
gdelete: gdelete,
a: 'gdelete'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( back_url !== '' )
{
document.location.href=back_url;
}
else
{
if ( response.msg !== null )
create_message( response.msg );
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
a: 'gdraw'
},
beforeSend: function() {
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
else
{
jQuery.ajax(
{
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data:
{
gtable: gtable,
gdelete: gdelete,
a: 'gdraw'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data )
{
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
if ( back_url !== '' )
{
document.location.href=back_url;
}
else
{
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
if ( response.msg !== null )
create_message( response.msg );
}
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
}
}
},
buttons:
{
'tak': true,
'nie': false
}
});
return false;
});
jQuery( 'body' ).on( 'change', '.g-search-input, .g-search-select', function()
{
var data = jQuery( this ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index )
{
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'search-column' )
var gsearch_column = vars[1];
if ( vars[0] === 'search-type' )
var gsearch_type = vars[1];
}
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index )
{
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
var gsearch_value = jQuery( this ).val();
jQuery.ajax({
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data:
{
gtable: gtable,
gsearch_column: gsearch_column,
gsearch_value: gsearch_value,
gsearch_type: gsearch_type,
a: 'gdraw'
},
beforeSend: function()
{
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
jQuery( 'input[name="' + gsearch_column + '"]' ).focus().val( jQuery( 'input[name="' + gsearch_column + '"]' ).val() );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});
jQuery( 'body' ).on( 'click', '.g-sort', function() {
var data = jQuery( this ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'sort-column' )
var gsort_column = vars[1];
if ( vars[0] === 'sort-type' )
var gsort_type = vars[1];
}
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
jQuery.ajax({
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
gsort_column: gsort_column,
gsort_type: gsort_type,
a: 'gdraw'
},
beforeSend: function() {
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});
jQuery( 'body' ).on( 'change', '#g-row-limit', function() {
var glimit = jQuery( this ).val();
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
jQuery.ajax({
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
glimit: glimit,
a: 'gdraw'
},
beforeSend: function() {
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});
jQuery( 'body' ).on( 'click', '.date-range-icon', function()
{
$( this ).parents( '.input-group' ).children( 'input' ).trigger( 'click' );
});
jQuery( 'body' ).on( 'click', '.g-next, .g-last, .g-first, .g-previous, .g-page', function(e)
{
e.preventDefault();
var data = jQuery( this ).parents( '.g-container' ).attr( 'data' );
data = data.split( ";" );
for ( index = 0; index < data.length; ++index ) {
var vars = data[ index ].split( ':') ;
if ( vars[0] === 'table' )
var gtable = vars[1];
}
var gpage = jQuery( this ).attr( 'page' );
jQuery.ajax({
type: 'POST',
cache: false,
url: dir + '/ajax.php',
data: {
gtable: gtable,
gpage: gpage,
a: 'gdraw'
},
beforeSend: function() {
jQuery( '#g-' + gtable ).find( '#g-loader' ).show();
},
success: function( data ) {
response = jQuery.parseJSON( data ); jQuery( '#g-' + gtable ).find( '#g-loader' ).hide();
if ( response.status === 'ok' )
{
jQuery( '#g-' + gtable ).find( '#g-results' ).empty().html( response.output );
}
else
{
if ( response.msg )
var msg = response.msg;
else
var msg = "Przepraszamy. Podczas wczytywania danych wystąpił błąd. Prosimy spróbować ponownie.";
create_error( msg );
}
}
});
});