643 lines
34 KiB
PHP
643 lines
34 KiB
PHP
<?php
|
|
/**
|
|
* Administratorska stran za nastavitve vtičnika Kolo Sreče
|
|
*/
|
|
|
|
// Prepreči neposreden dostop
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
global $wpdb;
|
|
|
|
// Preveri, če ima uporabnik pravice za dostop
|
|
if (!current_user_can('manage_options')) {
|
|
return;
|
|
}
|
|
|
|
// Shrani nastavitve
|
|
if (isset($_POST['wheel_save_settings']) && check_admin_referer('wheel_settings_nonce')) {
|
|
// Časovna omejitev
|
|
$cooldown_minutes = isset($_POST['wheel_cooldown_minutes']) ? intval($_POST['wheel_cooldown_minutes']) : 0;
|
|
update_option('wheel_cooldown_minutes', $cooldown_minutes);
|
|
|
|
// Maksimalno število spinov
|
|
$max_spins = isset($_POST['wheel_max_spins']) ? intval($_POST['wheel_max_spins']) : 0;
|
|
update_option('wheel_max_spins', $max_spins);
|
|
|
|
// Email obvestila
|
|
$send_emails = isset($_POST['wheel_send_emails']) ? true : false;
|
|
update_option('wheel_send_emails', $send_emails);
|
|
|
|
// SMTP nastavitve
|
|
$smtp_enabled = isset($_POST['wheel_smtp_enabled']) ? true : false;
|
|
update_option('wheel_smtp_enabled', $smtp_enabled);
|
|
|
|
$smtp_host = isset($_POST['wheel_smtp_host']) ? sanitize_text_field($_POST['wheel_smtp_host']) : '';
|
|
update_option('wheel_smtp_host', $smtp_host);
|
|
|
|
$smtp_port = isset($_POST['wheel_smtp_port']) ? sanitize_text_field($_POST['wheel_smtp_port']) : '587';
|
|
update_option('wheel_smtp_port', $smtp_port);
|
|
|
|
$smtp_encryption = isset($_POST['wheel_smtp_encryption']) ? sanitize_text_field($_POST['wheel_smtp_encryption']) : 'tls';
|
|
update_option('wheel_smtp_encryption', $smtp_encryption);
|
|
|
|
$smtp_username = isset($_POST['wheel_smtp_username']) ? sanitize_text_field($_POST['wheel_smtp_username']) : '';
|
|
update_option('wheel_smtp_username', $smtp_username);
|
|
|
|
// POPRAVEK: Gesla se ne sme sanitizirati s sanitize_text_field, ker lahko vsebuje posebne znake.
|
|
$smtp_password = isset($_POST['wheel_smtp_password']) ? wp_unslash($_POST['wheel_smtp_password']) : '';
|
|
update_option('wheel_smtp_password', $smtp_password);
|
|
|
|
$email_from_name = isset($_POST['wheel_email_from_name']) ? sanitize_text_field($_POST['wheel_email_from_name']) : get_bloginfo('name');
|
|
update_option('wheel_email_from_name', $email_from_name);
|
|
|
|
$email_from_email = isset($_POST['wheel_email_from_email']) ? sanitize_email($_POST['wheel_email_from_email']) : get_bloginfo('admin_email');
|
|
update_option('wheel_email_from_email', $email_from_email);
|
|
|
|
// Izdelki, ki podeljujejo spine
|
|
$spin_products = array();
|
|
if (isset($_POST['product_ids']) && isset($_POST['product_spins'])) {
|
|
$product_ids = $_POST['product_ids'];
|
|
$product_spins = $_POST['product_spins'];
|
|
|
|
foreach ($product_ids as $key => $product_id) {
|
|
if (!empty($product_id) && isset($product_spins[$key])) {
|
|
$spin_products[$product_id] = intval($product_spins[$key]);
|
|
}
|
|
}
|
|
}
|
|
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');
|
|
}
|
|
|
|
// Ročno dodajanje spinov uporabniku se zdaj izvaja preko AJAX
|
|
|
|
// Pridobi trenutne nastavitve
|
|
$cooldown_minutes = get_option('wheel_cooldown_minutes', 0);
|
|
$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');
|
|
?>
|
|
|
|
<div class="wrap wheel-admin-page">
|
|
<h1><?php echo esc_html__('Kolo Sreče - Nastavitve', 'wheel-of-fortune'); ?></h1>
|
|
|
|
<h2 class="nav-tab-wrapper">
|
|
<a href="#" class="nav-tab nav-tab-active" data-target="general-settings"><?php echo esc_html__('Splošne nastavitve', 'wheel-of-fortune'); ?></a>
|
|
<a href="#" class="nav-tab" data-target="product-settings"><?php echo esc_html__('Izdelki', 'wheel-of-fortune'); ?></a>
|
|
<a href="#" class="nav-tab" data-target="wheel-preview"><?php echo esc_html__('Predogled', 'wheel-of-fortune'); ?></a>
|
|
</h2>
|
|
|
|
<form method="post" action="">
|
|
<?php wp_nonce_field('wheel_settings_nonce'); ?>
|
|
|
|
<div id="general-settings" class="wheel-tab-content">
|
|
<div class="wheel-card">
|
|
<h2><?php echo esc_html__('Splošne nastavitve', 'wheel-of-fortune'); ?></h2>
|
|
|
|
<table class="wheel-form-table">
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_cooldown_minutes"><?php echo esc_html__('Časovna omejitev (minute)', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="number" id="wheel_cooldown_minutes" name="wheel_cooldown_minutes" value="<?php echo esc_attr($cooldown_minutes); ?>" min="0" step="1" />
|
|
<p class="description"><?php echo esc_html__('Število minut, ki mora preteči med dvema vrtljajema. Vrednost 0 pomeni brez omejitve.', 'wheel-of-fortune'); ?></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_max_spins"><?php echo esc_html__('Maksimalno število spinov', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="number" id="wheel_max_spins" name="wheel_max_spins" value="<?php echo esc_attr($max_spins); ?>" min="0" step="1" />
|
|
<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>
|
|
</div>
|
|
|
|
<div class="wheel-card">
|
|
<h2><?php echo esc_html__('SMTP nastavitve', 'wheel-of-fortune'); ?></h2>
|
|
<p class="description"><?php echo esc_html__('Nastavitve za pošiljanje e-pošte preko SMTP strežnika. Če so te nastavitve omogočene, bo vtičnik uporabljal SMTP namesto privzete WordPress funkcije za pošiljanje e-pošte.', 'wheel-of-fortune'); ?></p>
|
|
|
|
<table class="wheel-form-table">
|
|
<tr>
|
|
<th scope="row">
|
|
<?php echo esc_html__('Uporabi SMTP', 'wheel-of-fortune'); ?>
|
|
</th>
|
|
<td>
|
|
<label for="wheel_smtp_enabled">
|
|
<input type="checkbox" id="wheel_smtp_enabled" name="wheel_smtp_enabled" <?php checked(get_option('wheel_smtp_enabled', false)); ?> />
|
|
<?php echo esc_html__('Omogoči SMTP za pošiljanje e-pošte', 'wheel-of-fortune'); ?>
|
|
</label>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_smtp_host"><?php echo esc_html__('SMTP gostitelj', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="text" id="wheel_smtp_host" name="wheel_smtp_host" value="<?php echo esc_attr(get_option('wheel_smtp_host', '')); ?>" class="regular-text" />
|
|
<p class="description"><?php echo esc_html__('Npr. smtp.gmail.com', 'wheel-of-fortune'); ?></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_smtp_port"><?php echo esc_html__('SMTP vrata', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="text" id="wheel_smtp_port" name="wheel_smtp_port" value="<?php echo esc_attr(get_option('wheel_smtp_port', '587')); ?>" />
|
|
<p class="description"><?php echo esc_html__('Običajno 587 (TLS) ali 465 (SSL)', 'wheel-of-fortune'); ?></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_smtp_encryption"><?php echo esc_html__('Šifriranje', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<select id="wheel_smtp_encryption" name="wheel_smtp_encryption">
|
|
<option value="tls" <?php selected(get_option('wheel_smtp_encryption', 'tls'), 'tls'); ?>><?php echo esc_html__('TLS', 'wheel-of-fortune'); ?></option>
|
|
<option value="ssl" <?php selected(get_option('wheel_smtp_encryption', 'tls'), 'ssl'); ?>><?php echo esc_html__('SSL', 'wheel-of-fortune'); ?></option>
|
|
<option value="" <?php selected(get_option('wheel_smtp_encryption', 'tls'), ''); ?>><?php echo esc_html__('Brez', 'wheel-of-fortune'); ?></option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_smtp_username"><?php echo esc_html__('SMTP uporabniško ime', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="text" id="wheel_smtp_username" name="wheel_smtp_username" value="<?php echo esc_attr(get_option('wheel_smtp_username', '')); ?>" class="regular-text" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_smtp_password"><?php echo esc_html__('SMTP geslo', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="password" id="wheel_smtp_password" name="wheel_smtp_password" value="<?php echo esc_attr(get_option('wheel_smtp_password', '')); ?>" class="regular-text" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_email_from_name"><?php echo esc_html__('Ime pošiljatelja', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="text" id="wheel_email_from_name" name="wheel_email_from_name" value="<?php echo esc_attr(get_option('wheel_email_from_name', get_bloginfo('name'))); ?>" class="regular-text" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_email_from_email"><?php echo esc_html__('E-pošta pošiljatelja', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="email" id="wheel_email_from_email" name="wheel_email_from_email" value="<?php echo esc_attr(get_option('wheel_email_from_email', get_bloginfo('admin_email'))); ?>" class="regular-text" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<?php echo esc_html__('Preizkusi nastavitve', 'wheel-of-fortune'); ?>
|
|
</th>
|
|
<td>
|
|
<div style="display: flex; align-items: center; gap: 10px; flex-wrap: wrap;">
|
|
<input type="email" id="test-email-recipient" class="regular-text" placeholder="<?php esc_attr_e('Email for testing', 'wheel-of-fortune'); ?>" value="<?php echo esc_attr(wp_get_current_user()->user_email); ?>" />
|
|
<button type="button" id="test-email-button" class="button button-secondary"><?php echo esc_html__('Pošlji testno e-pošto', 'wheel-of-fortune'); ?></button>
|
|
<span class="spinner" style="float: none; vertical-align: middle;"></span>
|
|
</div>
|
|
<p class="description"><?php echo esc_html__('Vnesite e-poštni naslov in kliknite gumb, da preizkusite trenutno vnešene (ne nujno shranjene) nastavitve.', 'wheel-of-fortune'); ?></p>
|
|
<div id="test-email-result" style="margin-top: 10px;"></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="wheel-card">
|
|
<h2><?php echo esc_html__('Upravljanje s spini', 'wheel-of-fortune'); ?></h2>
|
|
|
|
<div class="wheel-form-table">
|
|
<h3><?php echo esc_html__('Ročno dodajanje spinov', 'wheel-of-fortune'); ?></h3>
|
|
<div>
|
|
<?php wp_nonce_field('wheel_add_spins_nonce', 'wheel_add_spins_nonce'); ?>
|
|
<table class="form-table">
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_user_id"><?php echo esc_html__('Uporabnik', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<select id="wheel_user_id" class="wheel-user-select">
|
|
<option value=""><?php echo esc_html__('Izberite uporabnika', 'wheel-of-fortune'); ?></option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">
|
|
<label for="wheel_spins_to_add"><?php echo esc_html__('Število spinov', 'wheel-of-fortune'); ?></label>
|
|
</th>
|
|
<td>
|
|
<input type="number" id="wheel_spins_to_add" value="1" min="1" step="1" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p class="submit">
|
|
<button type="button" id="wheel_add_spins_button" class="button button-primary"><?php echo esc_html__('Dodaj spine', 'wheel-of-fortune'); ?></button>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="wheel-form-table">
|
|
<h3><?php echo esc_html__('Ponastavitev spinov', 'wheel-of-fortune'); ?></h3>
|
|
<p class="description"><?php echo esc_html__('Ponastavi število spinov za vse uporabnike na 0.', 'wheel-of-fortune'); ?></p>
|
|
<p>
|
|
<button type="button" id="wheel_reset_all_spins" class="button button-secondary"><?php echo esc_html__('Ponastavi vse spine', 'wheel-of-fortune'); ?></button>
|
|
<span class="spinner" style="float: none; vertical-align: middle;"></span>
|
|
</p>
|
|
<div id="wheel_reset_result" style="margin-top: 10px;"></div>
|
|
</div>
|
|
|
|
<!-- Dodaj nov razdelek za testiranje kuponov -->
|
|
<div class="wheel-form-table">
|
|
<h3><?php echo esc_html__('Testiranje ustvarjanja kuponov', 'wheel-of-fortune'); ?></h3>
|
|
<p class="description"><?php echo esc_html__('Ta funkcija bo preizkusila različne metode za ustvarjanje WooCommerce kuponov in našla tisto, ki deluje na vašem sistemu.', 'wheel-of-fortune'); ?></p>
|
|
<p>
|
|
<button type="button" id="wheel_test_coupons" class="button button-secondary"><?php echo esc_html__('Testiraj ustvarjanje kuponov', 'wheel-of-fortune'); ?></button>
|
|
<span class="spinner coupon-test-spinner" style="float: none; vertical-align: middle;"></span>
|
|
</p>
|
|
<div id="wheel_coupon_test_result" style="margin-top: 10px;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="product-settings" class="wheel-tab-content" style="display:none;">
|
|
<div class="wheel-card">
|
|
<h2><?php echo esc_html__('Izdelki, ki podeljujejo spine', 'wheel-of-fortune'); ?></h2>
|
|
|
|
<p><?php echo esc_html__('Nastavite izdelke, ki bodo ob nakupu podelili določeno število spinov.', 'wheel-of-fortune'); ?></p>
|
|
|
|
<table class="wheel-products-table widefat">
|
|
<thead>
|
|
<tr>
|
|
<th><?php echo esc_html__('ID izdelka', 'wheel-of-fortune'); ?></th>
|
|
<th><?php echo esc_html__('Ime izdelka', 'wheel-of-fortune'); ?></th>
|
|
<th><?php echo esc_html__('Število spinov', 'wheel-of-fortune'); ?></th>
|
|
<th><?php echo esc_html__('Akcije', 'wheel-of-fortune'); ?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php if (empty($spin_products)): ?>
|
|
<tr>
|
|
<td colspan="4"><?php echo esc_html__('Ni nastavljenih izdelkov.', 'wheel-of-fortune'); ?></td>
|
|
</tr>
|
|
<?php else: ?>
|
|
<?php foreach ($spin_products as $product_id => $spins): ?>
|
|
<?php $product = wc_get_product($product_id); ?>
|
|
<?php if ($product): ?>
|
|
<tr>
|
|
<td>
|
|
<input type="hidden" name="product_ids[]" value="<?php echo esc_attr($product_id); ?>" />
|
|
<?php echo esc_html($product_id); ?>
|
|
</td>
|
|
<td><?php echo esc_html($product->get_name()); ?></td>
|
|
<td>
|
|
<input type="number" name="product_spins[]" value="<?php echo esc_attr($spins); ?>" min="1" step="1" />
|
|
</td>
|
|
<td>
|
|
<a href="#" class="delete-product" data-id="<?php echo esc_attr($product_id); ?>"><?php echo esc_html__('Odstrani', 'wheel-of-fortune'); ?></a>
|
|
</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<?php endforeach; ?>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td>
|
|
<input type="number" id="new-product-id" placeholder="<?php echo esc_attr__('ID izdelka', 'wheel-of-fortune'); ?>" />
|
|
</td>
|
|
<td id="new-product-name"></td>
|
|
<td>
|
|
<input type="number" id="new-product-spins" placeholder="<?php echo esc_attr__('Število spinov', 'wheel-of-fortune'); ?>" min="1" step="1" />
|
|
</td>
|
|
<td>
|
|
<button type="button" id="add-product-button" class="button button-secondary"><?php echo esc_html__('Dodaj izdelek', 'wheel-of-fortune'); ?></button>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="wheel-preview" class="wheel-tab-content" style="display:none;">
|
|
<div class="wheel-card">
|
|
<h2><?php echo esc_html__('Predogled kolesa', 'wheel-of-fortune'); ?></h2>
|
|
|
|
<div class="wheel-preview-container">
|
|
<div id="wheel-preview-svg">
|
|
<?php
|
|
$wheel = wheel_of_fortune();
|
|
$prizes = $wheel->get_wheel_prizes();
|
|
echo $wheel->generate_wheel_svg($prizes);
|
|
?>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="description"><?php echo esc_html__('To je predogled kolesa, ki ga bodo videli uporabniki. Za spreminjanje nagrad pojdite na stran "Nagrade".', 'wheel-of-fortune'); ?></p>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="submit">
|
|
<input type="submit" name="wheel_save_settings" class="button button-primary" value="<?php echo esc_attr__('Shrani nastavitve', 'wheel-of-fortune'); ?>" />
|
|
</p>
|
|
</form>
|
|
</div>
|
|
|
|
<script>
|
|
jQuery(document).ready(function($) {
|
|
// Iskanje izdelka po ID
|
|
$('#new-product-id').on('change', function() {
|
|
var productId = $(this).val();
|
|
|
|
if (productId) {
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'wheel_get_product_name',
|
|
product_id: productId,
|
|
_wpnonce: '<?php echo wp_create_nonce('wheel_product_nonce'); ?>'
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
$('#new-product-name').text(response.data.name);
|
|
} else {
|
|
$('#new-product-name').text('<?php echo esc_js(__('Izdelek ni najden', 'wheel-of-fortune')); ?>');
|
|
}
|
|
},
|
|
error: function() {
|
|
$('#new-product-name').text('<?php echo esc_js(__('Napaka pri iskanju izdelka', 'wheel-of-fortune')); ?>');
|
|
}
|
|
});
|
|
} else {
|
|
$('#new-product-name').text('');
|
|
}
|
|
});
|
|
|
|
// Dodajanje novega izdelka
|
|
$('#add-product-button').on('click', function() {
|
|
var productId = $('#new-product-id').val();
|
|
var spins = $('#new-product-spins').val();
|
|
var productName = $('#new-product-name').text();
|
|
|
|
if (!productId || !spins || productName === '<?php echo esc_js(__('Izdelek ni najden', 'wheel-of-fortune')); ?>') {
|
|
alert('<?php echo esc_js(__('Vnesite veljaven ID izdelka in število spinov', 'wheel-of-fortune')); ?>');
|
|
return;
|
|
}
|
|
|
|
var newRow = '<tr>' +
|
|
'<td><input type="hidden" name="product_ids[]" value="' + productId + '" />' + productId + '</td>' +
|
|
'<td>' + productName + '</td>' +
|
|
'<td><input type="number" name="product_spins[]" value="' + spins + '" min="1" step="1" /></td>' +
|
|
'<td><a href="#" class="delete-product" data-id="' + productId + '"><?php echo esc_js(__('Odstrani', 'wheel-of-fortune')); ?></a></td>' +
|
|
'</tr>';
|
|
|
|
var tbody = $('.wheel-products-table tbody');
|
|
if (tbody.find('tr:first td').length === 1) {
|
|
tbody.empty();
|
|
}
|
|
|
|
tbody.append(newRow);
|
|
|
|
$('#new-product-id').val('');
|
|
$('#new-product-spins').val('');
|
|
$('#new-product-name').text('');
|
|
});
|
|
|
|
// Brisanje izdelka
|
|
$('.wheel-products-table').on('click', '.delete-product', function(e) {
|
|
e.preventDefault();
|
|
|
|
var row = $(this).closest('tr');
|
|
row.remove();
|
|
|
|
var tbody = $('.wheel-products-table tbody');
|
|
if (tbody.find('tr').length === 0) {
|
|
tbody.append('<tr><td colspan="4"><?php echo esc_js(__('Ni nastavljenih izdelkov.', 'wheel-of-fortune')); ?></td></tr>');
|
|
}
|
|
});
|
|
|
|
// Ponastavi vse spine
|
|
$('#wheel_reset_all_spins').on('click', function() {
|
|
if (confirm('<?php echo esc_js(__('Ali ste prepričani, da želite ponastaviti vse spine za vse uporabnike? Tega ni mogoče razveljaviti!', 'wheel-of-fortune')); ?>')) {
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'wheel_reset_all_spins',
|
|
_wpnonce: '<?php echo wp_create_nonce('wheel_reset_spins_nonce'); ?>'
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
alert('<?php echo esc_js(__('Vsi spini so bili uspešno ponastavljeni.', 'wheel-of-fortune')); ?>');
|
|
} else {
|
|
alert('<?php echo esc_js(__('Napaka pri ponastavljanju spinov:', 'wheel-of-fortune')); ?> ' + response.data.message);
|
|
}
|
|
},
|
|
error: function() {
|
|
alert('<?php echo esc_js(__('Prišlo je do napake pri komunikaciji s strežnikom.', 'wheel-of-fortune')); ?>');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// Iskanje uporabnikov
|
|
$('#wheel_user_id').on('change', function() {
|
|
var userId = $(this).val();
|
|
|
|
if (userId) {
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'wheel_get_user_info',
|
|
user_id: userId,
|
|
_wpnonce: '<?php echo wp_create_nonce('wheel_user_info_nonce'); ?>'
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
$('#wheel_user_info').html(response.data.info);
|
|
} else {
|
|
$('#wheel_user_info').html('<?php echo esc_js(__('Uporabnik ni najden', 'wheel-of-fortune')); ?>');
|
|
}
|
|
},
|
|
error: function() {
|
|
$('#wheel_user_info').html('<?php echo esc_js(__('Napaka pri iskanju uporabnika', 'wheel-of-fortune')); ?>');
|
|
}
|
|
});
|
|
} else {
|
|
$('#wheel_user_info').html('');
|
|
}
|
|
});
|
|
|
|
// Dodaj spine uporabniku
|
|
$('#wheel_add_spins_button').on('click', function() {
|
|
var userId = $('#wheel_user_id').val();
|
|
var spins = $('#wheel_spins_to_add').val();
|
|
|
|
if (!userId || !spins) {
|
|
alert('<?php echo esc_js(__('Izberite uporabnika in vnesite število spinov', 'wheel-of-fortune')); ?>');
|
|
return;
|
|
}
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'wheel_add_user_spins',
|
|
user_id: userId,
|
|
spins: spins,
|
|
_wpnonce: '<?php echo wp_create_nonce('wheel_add_spins_nonce'); ?>'
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
alert('<?php echo esc_js(__('Spini so bili uspešno dodani.', 'wheel-of-fortune')); ?>');
|
|
$('#wheel_user_id').val('');
|
|
$('#wheel_spins_to_add').val('');
|
|
} else {
|
|
alert('<?php echo esc_js(__('Napaka pri dodajanju spinov:', 'wheel-of-fortune')); ?> ' + response.data.message);
|
|
}
|
|
},
|
|
error: function() {
|
|
alert('<?php echo esc_js(__('Prišlo je do napake pri komunikaciji s strežnikom.', 'wheel-of-fortune')); ?>');
|
|
}
|
|
});
|
|
});
|
|
|
|
// Testiranje ustvarjanja kuponov
|
|
$('#wheel_test_coupons').on('click', function() {
|
|
var $button = $(this);
|
|
var $spinner = $('.coupon-test-spinner');
|
|
var $result = $('#wheel_coupon_test_result');
|
|
|
|
$button.prop('disabled', true);
|
|
$spinner.addClass('is-active');
|
|
$result.html('');
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'wheel_test_coupons',
|
|
nonce: wheel_admin_nonce
|
|
},
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
$button.prop('disabled', false);
|
|
$spinner.removeClass('is-active');
|
|
|
|
if (response.success) {
|
|
var html = '<div class="notice notice-success"><p><strong>' + response.data.message + '</strong></p>';
|
|
|
|
// Prikaži podrobne rezultate testov
|
|
html += '<table class="widefat" style="margin-top:10px;">';
|
|
html += '<thead><tr><th>Metoda</th><th>Rezultat</th><th>Sporočilo</th></tr></thead><tbody>';
|
|
|
|
$.each(response.data.tests, function(method, result) {
|
|
var statusClass = result.success ? 'success' : 'error';
|
|
var statusText = result.success ? '✅ Uspešno' : '❌ Neuspešno';
|
|
|
|
html += '<tr class="' + statusClass + '">';
|
|
html += '<td><strong>' + method + '</strong></td>';
|
|
html += '<td>' + statusText + '</td>';
|
|
html += '<td>' + result.message + '</td>';
|
|
html += '</tr>';
|
|
});
|
|
|
|
html += '</tbody></table>';
|
|
|
|
if (response.data.working_method) {
|
|
html += '<p><strong><?php echo esc_js(__('Priporočilo:', 'wheel-of-fortune')); ?></strong> ';
|
|
html += '<?php echo esc_js(__('Uporabite metodo', 'wheel-of-fortune')); ?> <code>' + response.data.working_method + '</code> <?php echo esc_js(__('za ustvarjanje kuponov.', 'wheel-of-fortune')); ?></p>';
|
|
|
|
// Dodaj gumb za shranjevanje najboljše metode
|
|
html += '<p><button type="button" class="button button-primary save-best-method" data-method="' + response.data.working_method + '">';
|
|
html += '<?php echo esc_js(__('Shrani to metodo kot privzeto', 'wheel-of-fortune')); ?></button></p>';
|
|
}
|
|
|
|
html += '</div>';
|
|
$result.html(html);
|
|
|
|
// Dodaj poslušalec dogodkov za gumb za shranjevanje najboljše metode
|
|
$('.save-best-method').on('click', function() {
|
|
var method = $(this).data('method');
|
|
saveBestMethod(method);
|
|
});
|
|
} else {
|
|
$result.html('<div class="notice notice-error"><p><strong><?php echo esc_js(__('Napaka pri testiranju:', 'wheel-of-fortune')); ?></strong> ' + response.data.message + '</p></div>');
|
|
}
|
|
},
|
|
error: function(xhr, status, error) {
|
|
$button.prop('disabled', false);
|
|
$spinner.removeClass('is-active');
|
|
$result.html('<div class="notice notice-error"><p><strong><?php echo esc_js(__('Prišlo je do napake pri testiranju:', 'wheel-of-fortune')); ?></strong> ' + error + '</p></div>');
|
|
}
|
|
});
|
|
});
|
|
|
|
// Funkcija za shranjevanje najboljše metode
|
|
function saveBestMethod(method) {
|
|
var $result = $('#wheel_coupon_test_result');
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'wheel_save_best_coupon_method',
|
|
method: method,
|
|
nonce: wheel_admin_nonce
|
|
},
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
if (response.success) {
|
|
$result.prepend('<div class="notice notice-success is-dismissible"><p>' + response.data.message + '</p></div>');
|
|
} else {
|
|
$result.prepend('<div class="notice notice-error is-dismissible"><p>' + response.data.message + '</p></div>');
|
|
}
|
|
},
|
|
error: function(xhr, status, error) {
|
|
$result.prepend('<div class="notice notice-error is-dismissible"><p><?php echo esc_js(__('Napaka pri shranjevanju metode:', 'wheel-of-fortune')); ?> ' + error + '</p></div>');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
</script>
|