Domnovi popravki
Deploy to Test Server / deploy (push) Failing after 58s

This commit is contained in:
Mark Poljanšek committed 2025-11-20 22:01:53 +01:00
1 parent d77be150d9
commit 5210c9d2e6
11 files changed
+732 -284

No files matched your search

+54 -47
View File
@@ -20,6 +20,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
$discount_value = isset($_POST['prize_discount_value']) ? floatval($_POST['prize_discount_value']) : 0;
$email_subject = isset($_POST['prize_email_subject']) ? sanitize_text_field($_POST['prize_email_subject']) : '';
$email_template = isset($_POST['prize_email_template']) ? wp_kses_post($_POST['prize_email_template']) : '';
$is_try_again = isset($_POST['prize_is_try_again']) ? 1 : 0;
if (!empty($name) && $wheel_id > 0) {
$result = $wpdb->insert(
@@ -35,8 +36,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
'discount_value' => $discount_value,
'email_subject' => $email_subject,
'email_template' => $email_template,
'is_try_again' => $is_try_again
],
['%d', '%s', '%s', '%f', '%d', '%s', '%d', '%f', '%s', '%s']
['%d', '%s', '%s', '%f', '%d', '%s', '%d', '%f', '%s', '%s', '%d']
);
if ($result !== false) {
@@ -62,6 +64,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
$discount_value = isset($_POST['prize_discount_value']) ? floatval($_POST['prize_discount_value']) : 0;
$email_subject = isset($_POST['prize_email_subject']) ? sanitize_text_field($_POST['prize_email_subject']) : '';
$email_template = isset($_POST['prize_email_template']) ? wp_kses_post($_POST['prize_email_template']) : '';
$is_try_again = isset($_POST['prize_is_try_again']) ? 1 : 0;
if (!empty($name) && $prize_id > 0 && $wheel_id > 0) {
$result = $wpdb->update(
@@ -77,9 +80,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
'discount_value' => $discount_value,
'email_subject' => $email_subject,
'email_template' => $email_template,
'is_try_again' => $is_try_again
],
['id' => $prize_id],
['%d', '%s', '%s', '%f', '%d', '%s', '%d', '%f', '%s', '%s'],
['%d', '%s', '%s', '%f', '%d', '%s', '%d', '%f', '%s', '%s', '%d'],
['%d']
);
@@ -193,29 +197,6 @@ if (
}
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'update_wheel_settings') {
if (check_admin_referer('wheel_edit_settings_nonce')) {
global $wpdb;
$wheels_table = $wpdb->prefix . 'wof_wheels';
$wheel_id = isset($_POST['wheel_id']) ? intval($_POST['wheel_id']) : 0;
$has_daily_spin = isset($_POST['has_daily_spin']) ? 1 : 0;
if ($wheel_id > 0) {
$wpdb->update(
$wheels_table,
['has_daily_spin' => $has_daily_spin],
['id' => $wheel_id],
['%d'],
['%d']
);
echo '<div class="notice notice-success is-dismissible"><p>' . __('Wheel settings updated!', 'wheel-of-fortune') . '</p></div>';
// Osvežimo podatke o kolesu po shranjevanju
$wheel = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wheels_table WHERE id = %d", $wheel_id), ARRAY_A);
}
}
}
global $wpdb;
$wheels_table = $wpdb->prefix . 'wof_wheels';
$prizes_table = $wpdb->prefix . 'wheel_prizes';
@@ -254,26 +235,15 @@ if (class_exists('WooCommerce')) {
<hr class="wp-header-end">
<div class="wheel-card">
<h2><?php _e('Wheel Settings', 'wheel-of-fortune'); ?></h2>
<form method="post" action="">
<?php wp_nonce_field('wheel_edit_settings_nonce'); ?>
<input type="hidden" name="action" value="update_wheel_settings">
<input type="hidden" name="wheel_id" value="<?php echo esc_attr($wheel_id); ?>">
<table class="form-table">
<tr>
<th scope="row"><?php _e('Daily Free Spin', 'wheel-of-fortune'); ?></th>
<td>
<label for="has_daily_spin">
<input name="has_daily_spin" type="checkbox" id="has_daily_spin" value="1" <?php checked(isset($wheel['has_daily_spin']) && $wheel['has_daily_spin'], 1); ?>>
<?php _e('Enable 1 free daily spin for all logged-in users on this wheel.', 'wheel-of-fortune'); ?>
</label>
<p class="description"><?php _e('If checked, users can spin this wheel once per day for free, regardless of their purchased spins.', 'wheel-of-fortune'); ?></p>
</td>
</tr>
</table>
<p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Wheel Settings', 'wheel-of-fortune'); ?>"></p>
</form>
<!-- Gumb za migracijo is_try_again stolpca -->
<div class="notice notice-info">
<p><strong><?php _e('Database Migration', 'wheel-of-fortune'); ?>:</strong>
<?php _e('If you encounter "Unknown column is_try_again" error, click the button below to add the missing column to the database.', 'wheel-of-fortune'); ?>
<button id="migrate-try-again-btn" class="button button-secondary" style="margin-left: 10px;">
<?php _e('Add is_try_again Column', 'wheel-of-fortune'); ?>
</button>
<span id="migrate-result" style="margin-left: 10px;"></span>
</p>
</div>
<div class="wheel-card">
@@ -399,12 +369,12 @@ if (class_exists('WooCommerce')) {
<table class="wheel-form-table">
<tr><th scope="row"><label for="edit-prize-name"><?php _e('Prize Name', 'wheel-of-fortune'); ?></label></th><td><input type="text" id="edit-prize-name" name="prize_name" class="regular-text" required></td></tr>
<tr><th scope="row"><label for="edit-prize-description"><?php _e('Description', 'wheel-of-fortune'); ?></label></th><td><textarea id="edit-prize-description" name="prize_description" rows="3" class="large-text"></textarea></td></tr>
<tr><th scope="row"><label for="edit-prize-probability"><?php _e('Probability (Paid Spin)', 'wheel-of-fortune'); ?></label></th><td><input type="number" id="edit-prize-probability" name="prize_probability" step="any" min="0" max="1" required><p class="description"><?php _e('Enter a value between 0 and 1. Use 0 for prizes that cannot be won.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-daily-spin-probability"><?php _e('Probability (Daily Spin)', 'wheel-of-fortune'); ?></label></th><td><input type="number" id="edit-prize-daily-spin-probability" name="prize_daily_spin_probability" step="any" min="0" max="1"><p class="description"><?php _e('Chance for a FREE daily spin. Leave empty to use the same probability as the paid spin.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-probability"><?php _e('Probability', 'wheel-of-fortune'); ?></label></th><td><input type="number" id="edit-prize-probability" name="prize_probability" step="any" min="0" max="1" required><p class="description"><?php _e('Enter a value between 0 and 1. Use 0 for prizes that cannot be won.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><?php _e('Status', 'wheel-of-fortune'); ?></th><td><label for="edit-prize-is-active"><input type="checkbox" id="edit-prize-is-active" name="prize_is_active" value="1"><?php _e('Prize is active', 'wheel-of-fortune'); ?></label></td></tr>
<tr><th scope="row"><label for="edit-prize-redemption-code"><?php _e('Redemption Code', 'wheel-of-fortune'); ?></label></th><td><input type="text" id="edit-prize-redemption-code" name="prize_redemption_code" class="regular-text"><p class="description"><?php _e('Optional code for the user to redeem the prize.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-is-discount"><?php _e('Is Discount?', 'wheel-of-fortune'); ?></label></th><td><input type="checkbox" id="edit-prize-is-discount" name="prize_is_discount" value="1"><p class="description"><?php _e('Check if the prize is a discount.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-discount-value"><?php _e('Discount Value (%)', 'wheel-of-fortune'); ?></label></th><td><input type="number" id="edit-prize-discount-value" name="prize_discount_value" step="0.01" min="0" max="100"><p class="description"><?php _e('Enter the discount value in %.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-is-try-again"><?php _e('Is Try Again?', 'wheel-of-fortune'); ?></label></th><td><input type="checkbox" id="edit-prize-is-try-again" name="prize_is_try_again" value="1"><p class="description"><?php _e('Check if the prize is a try again.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-email-subject"><?php _e('Email Subject', 'wheel-of-fortune'); ?></label></th><td><input type="text" id="edit-prize-email-subject" name="prize_email_subject" class="large-text"><p class="description"><?php _e('Subject for this prize\'s email. If empty, the default subject will be used.', 'wheel-of-fortune'); ?></p></td></tr>
<tr><th scope="row"><label for="edit-prize-email-template"><?php _e('Email Template', 'wheel-of-fortune'); ?></label></th><td><textarea id="edit-prize-email-template" name="prize_email_template" rows="10" class="large-text code"></textarea><p class="description"><?php _e('Available template tags:', 'wheel-of-fortune'); ?> <code>{user_name}</code>, <code>{prize_name}</code>, etc.</p></td></tr>
</table>
@@ -463,4 +433,41 @@ jQuery(document).ready(function($) {
});
});
});
</script>
<script>
jQuery(document).ready(function($) {
// Gumb za migracijo is_try_again stolpca
$('#migrate-try-again-btn').on('click', function(e) {
e.preventDefault();
const button = $(this);
const resultSpan = $('#migrate-result');
button.prop('disabled', true).text('<?php _e('Running migration...', 'wheel-of-fortune'); ?>');
resultSpan.html('');
$.ajax({
url: ajaxurl,
method: 'POST',
data: {
action: 'wheel_migrate_try_again',
_ajax_nonce: '<?php echo wp_create_nonce('wheel_admin_nonce'); ?>'
},
success: function(response) {
if (response.success) {
resultSpan.html('<span style="color: green;">✓ ' + response.data.message + '</span>');
button.text('<?php _e('Migration Completed', 'wheel-of-fortune'); ?>').addClass('button-primary');
} else {
resultSpan.html('<span style="color: red;">✗ ' + (response.data.message || '<?php _e('Migration failed', 'wheel-of-fortune'); ?>') + '</span>');
button.prop('disabled', false).text('<?php _e('Add is_try_again Column', 'wheel-of-fortune'); ?>');
}
},
error: function() {
resultSpan.html('<span style="color: red;">✗ <?php _e('Network error occurred', 'wheel-of-fortune'); ?></span>');
button.prop('disabled', false).text('<?php _e('Add is_try_again Column', 'wheel-of-fortune'); ?>');
}
});
});
});
</script>
+2 -2
View File
@@ -65,13 +65,13 @@ jQuery(document).ready(function($) {
$('#edit-prize-name').val(prize.name);
$('#edit-prize-description').val(prize.description);
$('#edit-prize-probability').val(prize.probability);
$('#edit-prize-daily-spin-probability').val(prize.daily_spin_probability);
$('#edit-prize-is-active').prop('checked', parseInt(prize.is_active, 10));
$('#edit-prize-redemption-code').val(prize.redemption_code);
$('#edit-prize-is-discount').prop('checked', parseInt(prize.is_discount, 10));
$('#edit-prize-discount-value').val(prize.discount_value);
$('#edit-prize-email-subject').val(prize.email_subject);
$('#edit-prize-email-template').val(prize.email_template);
$('#edit-prize-is-try-again').prop('checked', parseInt(prize.is_try_again, 10));
modal.show();
} else {
@@ -95,13 +95,13 @@ jQuery(document).ready(function($) {
name: $('#edit-prize-name').val(),
description: $('#edit-prize-description').val(),
probability: $('#edit-prize-probability').val(),
daily_spin_probability: $('#edit-prize-daily-spin-probability').val(),
is_active: $('#edit-prize-is-active').is(':checked') ? 1 : 0,
redemption_code: $('#edit-prize-redemption-code').val(),
is_discount: $('#edit-prize-is-discount').is(':checked') ? 1 : 0,
discount_value: $('#edit-prize-discount-value').val(),
email_subject: $('#edit-prize-email-subject').val(),
email_template: $('#edit-prize-email-template').val(),
is_try_again: $('#edit-prize-is-try-again').is(':checked') ? 1 : 0,
};
// Debug: preveri wheel_id
+8 -8
View File
@@ -13,19 +13,12 @@ if (!defined('ABSPATH')) exit;
<td><textarea id="prize_description" name="prize_description" rows="3" class="large-text"></textarea></td>
</tr>
<tr>
<th scope="row"><label for="prize_probability"><?php _e('Probability (Paid Spin)', 'wheel-of-fortune'); ?></label></th>
<th scope="row"><label for="prize_probability"><?php _e('Probability', 'wheel-of-fortune'); ?></label></th>
<td>
<input type="number" id="prize_probability" name="prize_probability" step="any" min="0" max="1" required>
<p class="description"><?php _e('Enter a value between 0 and 1 (e.g., 0.1 for 10% chance). Use 0 for prizes that cannot be won.', 'wheel-of-fortune'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="prize_daily_spin_probability"><?php _e('Probability (Daily Spin)', 'wheel-of-fortune'); ?></label></th>
<td>
<input type="number" id="prize_daily_spin_probability" name="prize_daily_spin_probability" step="any" min="0" max="1">
<p class="description"><?php _e('Chance for a FREE daily spin. Leave empty to use the same probability as the paid spin.', 'wheel-of-fortune'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><?php _e('Status', 'wheel-of-fortune'); ?></th>
<td>
@@ -73,4 +66,11 @@ if (!defined('ABSPATH')) exit;
<input type="number" id="prize_discount_value" name="prize_discount_value" step="0.01" min="0" max="100">
<p class="description"><?php _e('Vnesi vrednost popusta v %.', 'wheel-of-fortune'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="prize_is_try_again"><?php _e('Try Again?', 'wheel-of-fortune'); ?></label></th>
<td>
<input type="checkbox" id="prize_is_try_again" name="prize_is_try_again" value="1">
<p class="description"><?php _e('Označi, če je ta nagrada "Try Again" (ponovni poskus).', 'wheel-of-fortune'); ?></p>
</td>
</tr>
+25
View File
@@ -8,6 +8,8 @@ if (!defined('ABSPATH')) {
exit;
}
global $wpdb;
// Preveri, če ima uporabnik pravice za dostop
if (!current_user_can('manage_options')) {
return;
@@ -67,6 +69,10 @@ if (isset($_POST['wheel_save_settings']) && check_admin_referer('wheel_settings_
}
update_option('wheel_spin_products', $spin_products);
// Dnevni spin - shrani izbrano kolo
$daily_spin_wheel_id = isset($_POST['wof_daily_spin_wheel_id']) ? intval($_POST['wof_daily_spin_wheel_id']) : '';
update_option('wof_daily_spin_wheel_id', $daily_spin_wheel_id);
// Prikaži sporočilo o uspehu
add_settings_error('wheel_settings', 'settings_updated', __('Nastavitve so bile uspešno shranjene.', 'wheel-of-fortune'), 'updated');
}
@@ -79,6 +85,11 @@ $max_spins = get_option('wheel_max_spins', 0);
$send_emails = get_option('wheel_send_emails', false);
$spin_products = get_option('wheel_spin_products', array());
// Pridobi vsa kolesa za dropdown
$wheels_table = $wpdb->prefix . 'wof_wheels';
$wheels = $wpdb->get_results("SELECT * FROM $wheels_table ORDER BY id ASC", ARRAY_A);
$daily_spin_wheel_id = get_option('wof_daily_spin_wheel_id', '');
// Prikaži sporočila o napakah/uspehu
settings_errors('wheel_settings');
?>
@@ -118,6 +129,20 @@ settings_errors('wheel_settings');
<p class="description"><?php echo esc_html__('Maksimalno število spinov, ki jih lahko ima uporabnik. Vrednost 0 pomeni brez omejitve.', 'wheel-of-fortune'); ?></p>
</td>
</tr>
<tr>
<th scope="row">
<label for="wof_daily_spin_wheel_id"><?php echo esc_html__('Kolo za dnevni spin', 'wheel-of-fortune'); ?></label>
</th>
<td>
<select id="wof_daily_spin_wheel_id" name="wof_daily_spin_wheel_id">
<option value=""><?php echo esc_html__('Izberi kolo', 'wheel-of-fortune'); ?></option>
<?php foreach ($wheels as $wheel): ?>
<option value="<?php echo esc_attr($wheel['id']); ?>" <?php selected($daily_spin_wheel_id, $wheel['id']); ?>><?php echo esc_html($wheel['name']); ?></option>
<?php endforeach; ?>
</select>
<p class="description"><?php echo esc_html__('Vsi registrirani uporabniki bodo vsakih 24 ur prejeli 1 spin na izbranem kolesu.', 'wheel-of-fortune'); ?></p>
</td>
</tr>
<!-- Možnost za pošiljanje e-pošte je odstranjena, saj se e-pošta pošlje vedno -->
<input type="hidden" name="wheel_send_emails" value="1" />
</table>
+285 -2
View File
@@ -81,6 +81,41 @@ if (isset($_POST['mark_redeemed']) && isset($_POST['prize_id'])) {
'</p></div>';
}
// Ponastavi spine na 0 za vse uporabnike na izbranem kolesu
if (isset($_POST['reset_all_spins_wheel']) && isset($_POST['wheel_id'])) {
check_admin_referer('reset_spins_wheel_nonce', 'reset_spins_wheel_nonce');
$wheel_id = intval($_POST['wheel_id']);
// Preveri, če kolo obstaja
$wheel_exists = $wpdb->get_var($wpdb->prepare("SELECT id FROM $wheels_table WHERE id = %d", $wheel_id));
if ($wheel_exists) {
// Ponastavi spine na 0 za vse uporabnike na tem kolesu
$result = $wpdb->update(
$spins_table,
array('spins_available' => 0),
array('wheel_id' => $wheel_id),
array('%d'),
array('%d')
);
if ($result !== false) {
echo '<div class="notice notice-success is-dismissible"><p>' .
sprintf(__('Vsi spini za kolo ID %d so bili uspešno ponastavljeni na 0.', 'wheel-of-fortune'), $wheel_id) .
'</p></div>';
} else {
echo '<div class="notice notice-error is-dismissible"><p>' .
__('Prišlo je do napake pri ponastavitvi spinov.', 'wheel-of-fortune') .
'</p></div>';
}
} else {
echo '<div class="notice notice-error is-dismissible"><p>' .
__('Izbrano kolo ne obstaja.', 'wheel-of-fortune') .
'</p></div>';
}
}
// Izberi uporabnika za podrobnosti
$selected_user_id = isset($_GET['user_id']) ? intval($_GET['user_id']) : 0;
@@ -106,6 +141,22 @@ if ($selected_user_id > 0) {
<div class="wrap">
<h1><?php echo esc_html__('Statistika Kolesa Sreče', 'wheel-of-fortune'); ?></h1>
<!-- Gumb za ponastavitev spinov za izbrano kolo -->
<div class="notice notice-warning" style="margin: 20px 0;">
<p>
<strong><?php echo esc_html__('Ponastavitev spinov', 'wheel-of-fortune'); ?>:</strong>
<?php echo esc_html__('To dejanje bo ponastavilo vse spine na 0 za vse uporabnike na izbranem kolesu. To dejanje ni mogoče razveljaviti.', 'wheel-of-fortune'); ?>
<form method="post" style="display: inline-block; margin-left: 10px;">
<?php wp_nonce_field('reset_spins_wheel_nonce', 'reset_spins_wheel_nonce'); ?>
<input type="hidden" name="wheel_id" value="<?php echo esc_attr($selected_wheel_id); ?>">
<button type="submit" name="reset_all_spins_wheel" class="button button-secondary"
onclick="return confirm('<?php echo esc_js(__('Ste prepričani, da želite ponastaviti vse spine na 0 za vse uporabnike na tem kolesu? To dejanje ni mogoče razveljaviti.', 'wheel-of-fortune')); ?>')">
<?php echo esc_html__('Ponastavi vse spine na 0 za to kolo', 'wheel-of-fortune'); ?>
</button>
</form>
</p>
</div>
<!-- Izbira kolesa -->
<div class="tablenav top">
<div class="alignleft actions">
@@ -132,9 +183,45 @@ if ($selected_user_id > 0) {
<br class="clear">
</div>
<h2><?php echo sprintf(esc_html__('Seznam uporabnikov s spini za kolo: %s', 'wheel-of-fortune'), esc_html($selected_wheel['name'])); ?></h2>
<table class="wp-list-table widefat fixed striped">
<!-- Filtriranje uporabnikov -->
<div class="user-filters" style="margin: 20px 0; padding: 15px; background: #f9f9f9; border: 1px solid #ddd; border-radius: 5px;">
<h4><?php echo esc_html__('Filtriranje uporabnikov', 'wheel-of-fortune'); ?></h4>
<div style="display: flex; gap: 15px; align-items: center; flex-wrap: wrap;">
<div>
<label for="filter-spins"><?php echo esc_html__('Preostali spini:', 'wheel-of-fortune'); ?></label>
<select id="filter-spins" style="margin-left: 5px;">
<option value=""><?php echo esc_html__('Vsi', 'wheel-of-fortune'); ?></option>
<option value="0"><?php echo esc_html__('0 spinov (porabili)', 'wheel-of-fortune'); ?></option>
<option value="1"><?php echo esc_html__('1 spin', 'wheel-of-fortune'); ?></option>
<option value="2"><?php echo esc_html__('2 spina', 'wheel-of-fortune'); ?></option>
<option value="3"><?php echo esc_html__('3 spini', 'wheel-of-fortune'); ?></option>
<option value="4"><?php echo esc_html__('4 spini', 'wheel-of-fortune'); ?></option>
<option value="5"><?php echo esc_html__('5+ spinov', 'wheel-of-fortune'); ?></option>
</select>
</div>
<div>
<label for="filter-total-spins"><?php echo esc_html__('Skupno spinov:', 'wheel-of-fortune'); ?></label>
<select id="filter-total-spins" style="margin-left: 5px;">
<option value=""><?php echo esc_html__('Vsi', 'wheel-of-fortune'); ?></option>
<option value="0"><?php echo esc_html__('0', 'wheel-of-fortune'); ?></option>
<option value="1"><?php echo esc_html__('1', 'wheel-of-fortune'); ?></option>
<option value="2-5"><?php echo esc_html__('2-5', 'wheel-of-fortune'); ?></option>
<option value="6-10"><?php echo esc_html__('6-10', 'wheel-of-fortune'); ?></option>
<option value="11+"><?php echo esc_html__('11+', 'wheel-of-fortune'); ?></option>
</select>
</div>
<div>
<button type="button" onclick="filterUsers()" class="button button-primary"><?php echo esc_html__('Potrdi filtriranje', 'wheel-of-fortune'); ?></button>
<button type="button" onclick="clearFilters()" class="button" style="margin-left: 10px;"><?php echo esc_html__('Počisti filtre', 'wheel-of-fortune'); ?></button>
</div>
</div>
<div id="filter-results" style="margin-top: 10px; font-weight: bold; color: #0073aa;"></div>
</div>
<table class="wp-list-table widefat fixed striped" id="users-table">
<thead>
<tr>
<th scope="col"><?php echo esc_html__('ID', 'wheel-of-fortune'); ?></th>
@@ -254,4 +341,200 @@ if ($selected_user_id > 0) {
<p><?php echo esc_html__('Uporabnik ni bil najden.', 'wheel-of-fortune'); ?></p>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<script>
// Funkcija za filtriranje uporabnikov
function filterUsers() {
const filterSpins = document.getElementById('filter-spins').value;
const filterTotalSpins = document.getElementById('filter-total-spins').value;
const table = document.getElementById('users-table');
const tbody = table.getElementsByTagName('tbody')[0];
if (!tbody) {
console.error('Tabela ni najdena');
return;
}
const rows = tbody.getElementsByTagName('tr');
let visibleCount = 0;
console.log('Filtriranje uporabnikov:', { filterSpins, filterTotalSpins, totalRows: rows.length });
for (let i = 0; i < rows.length; i++) {
const row = rows[i];
const cells = row.getElementsByTagName('td');
if (cells.length < 4) {
console.log('Preskočena vrstica (premalo stolpcev):', cells.length);
continue; // Preskoči header vrstice ali vrstice brez dovolj stolpcev
}
// Debug: prikaži vsebino vseh stolpcev
console.log(`Vrstica ${i} stolpci:`, {
stolpec0: cells[0] ? cells[0].textContent.trim() : 'N/A',
stolpec1: cells[1] ? cells[1].textContent.trim() : 'N/A',
stolpec2: cells[2] ? cells[2].textContent.trim() : 'N/A',
stolpec3: cells[3] ? cells[3].textContent.trim() : 'N/A',
stolpec4: cells[4] ? cells[4].textContent.trim() : 'N/A',
stolpec5: cells[5] ? cells[5].textContent.trim() : 'N/A'
});
const currentSpins = parseInt(cells[3].textContent.trim()) || 0; // Preostali spini (4. stolpec)
const totalSpins = parseInt(cells[2].textContent.trim()) || 0; // Skupno št. spinov (3. stolpec)
console.log(`Vrstica ${i}: currentSpins=${currentSpins}, totalSpins=${totalSpins}`);
let showRow = true;
// Filtriranje po preostalih spinih
if (filterSpins !== '') {
if (filterSpins === '0') {
showRow = showRow && (currentSpins === 0);
} else if (filterSpins === '1') {
showRow = showRow && (currentSpins === 1);
} else if (filterSpins === '2') {
showRow = showRow && (currentSpins === 2);
} else if (filterSpins === '3') {
showRow = showRow && (currentSpins === 3);
} else if (filterSpins === '4') {
showRow = showRow && (currentSpins === 4);
} else if (filterSpins === '5') {
showRow = showRow && (currentSpins >= 5);
}
}
// Filtriranje po skupnem številu spinov
if (filterTotalSpins !== '') {
if (filterTotalSpins === '0') {
showRow = showRow && (totalSpins === 0);
} else if (filterTotalSpins === '1') {
showRow = showRow && (totalSpins === 1);
} else if (filterTotalSpins === '2-5') {
showRow = showRow && (totalSpins >= 2 && totalSpins <= 5);
} else if (filterTotalSpins === '6-10') {
showRow = showRow && (totalSpins >= 6 && totalSpins <= 10);
} else if (filterTotalSpins === '11+') {
showRow = showRow && (totalSpins >= 11);
}
}
// Prikaži/skrij vrstico
if (showRow) {
row.style.display = '';
visibleCount++;
console.log(`Prikazana vrstica ${i}`);
} else {
row.style.display = 'none';
console.log(`Skrita vrstica ${i}`);
}
}
console.log(`Filtriranje končano: ${visibleCount} od ${rows.length} vrstic prikazanih`);
// Posodobi števec rezultatov
updateFilterResults(visibleCount, rows.length);
}
function clearFilters() {
document.getElementById('filter-spins').value = '';
document.getElementById('filter-total-spins').value = '';
filterUsers();
}
function updateFilterResults(visible, total) {
const resultsDiv = document.getElementById('filter-results');
if (visible === total) {
resultsDiv.innerHTML = '<?php echo esc_js(__('Prikazani vsi uporabniki:', 'wheel-of-fortune')); ?> ' + total;
} else {
resultsDiv.innerHTML = '<?php echo esc_js(__('Prikazano:', 'wheel-of-fortune')); ?> ' + visible + ' <?php echo esc_js(__('od', 'wheel-of-fortune')); ?> ' + total + ' <?php echo esc_js(__('uporabnikov', 'wheel-of-fortune')); ?>';
}
}
// Testna funkcija za preverjanje strukture tabele
function testTableStructure() {
const table = document.getElementById('users-table');
if (!table) {
console.log('Tabela ni najdena!');
return;
}
const tbody = table.getElementsByTagName('tbody')[0];
if (!tbody) {
console.log('Tbody ni najden!');
return;
}
const rows = tbody.getElementsByTagName('tr');
console.log(`Najdenih ${rows.length} vrstic v tabeli`);
if (rows.length > 0) {
const firstRow = rows[0];
const cells = firstRow.getElementsByTagName('td');
console.log(`Prva vrstica ima ${cells.length} stolpcev`);
for (let i = 0; i < cells.length; i++) {
console.log(`Stolpec ${i}: "${cells[i].textContent.trim()}"`);
}
}
}
// Inicializiraj števec rezultatov ob nalaganju strani
jQuery(document).ready(function($) {
// Gumb za ponastavitev spinov preko AJAX
$('button[name="reset_all_spins_wheel"]').on('click', function(e) {
e.preventDefault();
const button = $(this);
const originalText = button.text();
const wheelId = $('input[name="wheel_id"]').val();
if (!confirm('<?php echo esc_js(__('Ste prepričani, da želite ponastaviti vse spine na 0 za vse uporabnike na tem kolesu? To dejanje ni mogoče razveljaviti.', 'wheel-of-fortune')); ?>')) {
return;
}
button.prop('disabled', true).text('<?php echo esc_js(__('Ponastavljam spine...', 'wheel-of-fortune')); ?>');
$.ajax({
url: ajaxurl,
method: 'POST',
data: {
action: 'wheel_reset_spins_wheel',
wheel_id: wheelId,
_ajax_nonce: '<?php echo wp_create_nonce('wheel_admin_nonce'); ?>'
},
success: function(response) {
if (response.success) {
// Prikaži uspešno sporočilo
$('<div class="notice notice-success is-dismissible"><p>' + response.data.message + '</p></div>')
.insertAfter('h1')
.delay(3000)
.fadeOut();
// Osveži stran po 2 sekundah
setTimeout(function() {
location.reload();
}, 2000);
} else {
alert(response.data.message || '<?php echo esc_js(__('Prišlo je do napake.', 'wheel-of-fortune')); ?>');
button.prop('disabled', false).text(originalText);
}
},
error: function() {
alert('<?php echo esc_js(__('Prišlo je do napake pri komunikaciji s strežnikom.', 'wheel-of-fortune')); ?>');
button.prop('disabled', false).text(originalText);
}
});
});
// Posodobi števec rezultatov ob nalaganju strani
const table = document.getElementById('users-table');
if (table) {
const rows = table.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
updateFilterResults(rows.length, rows.length);
// Testiraj strukturo tabele
testTableStructure();
}
});
</script>