210 lines
11 KiB
PHP
210 lines
11 KiB
PHP
<div class="row">
|
|
<div class="col-12 col-md-6">
|
|
<div class="settings-card">
|
|
<div class="settings-card-header">
|
|
<div class="settings-card-icon"><i class="fa-solid fa-lock"></i></div>
|
|
<div>
|
|
<h3>Zmiana hasła</h3>
|
|
<small>Zmień swoje stare hasło na nowe</small>
|
|
</div>
|
|
</div>
|
|
<form method="POST" id="password-settings" action="/users/password_change/">
|
|
<div class="settings-field">
|
|
<label for="password_old">Stare hasło</label>
|
|
<div class="settings-input-wrap">
|
|
<i class="fa-solid fa-key settings-input-icon"></i>
|
|
<input type="password" id="password_old" name="password_old" class="form-control" required placeholder="Wprowadź stare hasło" />
|
|
<button type="button" class="settings-toggle-pw" onclick="password_toggle( this, 'password_old' )">
|
|
<i class="fa-solid fa-eye"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="password_new">Nowe hasło</label>
|
|
<div class="settings-input-wrap">
|
|
<i class="fa-solid fa-key settings-input-icon"></i>
|
|
<input type="password" id="password_new" name="password_new" class="form-control" required placeholder="Wprowadź nowe hasło" />
|
|
<button type="button" class="settings-toggle-pw" onclick="password_toggle( this, 'password_new' )">
|
|
<i class="fa-solid fa-eye"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<button type="submit" class="btn btn-success"><i class="fa-solid fa-check mr5"></i>Zmień hasło</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" style="margin-top: 25px;">
|
|
<div class="col-12">
|
|
<div class="settings-card">
|
|
<div class="settings-card-header">
|
|
<div class="settings-card-icon"><i class="fa-brands fa-google"></i></div>
|
|
<div>
|
|
<h3>Google Ads API</h3>
|
|
<small>Dane do połączenia z Google Ads REST API (wymagane do synchronizacji kampanii)</small>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
$last_error = \services\GoogleAdsApi::get_setting( 'google_ads_last_error' );
|
|
if ( $last_error ): ?>
|
|
<div class="settings-alert-error">
|
|
<i class="fa-solid fa-triangle-exclamation"></i>
|
|
<span><strong>Ostatni błąd API:</strong> <?= htmlspecialchars( $last_error ); ?></span>
|
|
</div>
|
|
<?php endif; ?>
|
|
<form method="POST" id="google-ads-settings" action="/settings/save_google_ads">
|
|
<div class="settings-fields-grid">
|
|
<div class="settings-field">
|
|
<label for="google_ads_developer_token">Developer Token</label>
|
|
<input type="text" id="google_ads_developer_token" name="google_ads_developer_token" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'google_ads_developer_token' ) ); ?>" placeholder="np. ABcdEf1234..." />
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="google_ads_client_id">OAuth2 Client ID</label>
|
|
<input type="text" id="google_ads_client_id" name="google_ads_client_id" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'google_ads_client_id' ) ); ?>" placeholder="np. 123456789.apps.googleusercontent.com" />
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="google_ads_client_secret">OAuth2 Client Secret</label>
|
|
<div class="settings-input-wrap">
|
|
<input type="password" id="google_ads_client_secret" name="google_ads_client_secret" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'google_ads_client_secret' ) ); ?>" />
|
|
<button type="button" class="settings-toggle-pw" onclick="password_toggle( this, 'google_ads_client_secret' )">
|
|
<i class="fa-solid fa-eye"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="google_ads_refresh_token">OAuth2 Refresh Token</label>
|
|
<div class="settings-input-wrap">
|
|
<input type="password" id="google_ads_refresh_token" name="google_ads_refresh_token" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'google_ads_refresh_token' ) ); ?>" />
|
|
<button type="button" class="settings-toggle-pw" onclick="password_toggle( this, 'google_ads_refresh_token' )">
|
|
<i class="fa-solid fa-eye"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="google_ads_manager_account_id">Manager Account ID <span class="text-muted">(opcjonalnie, dla MCC)</span></label>
|
|
<input type="text" id="google_ads_manager_account_id" name="google_ads_manager_account_id" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'google_ads_manager_account_id' ) ); ?>" placeholder="np. 123-456-7890" />
|
|
</div>
|
|
</div>
|
|
<button type="button" class="btn btn-success" onclick="$( '#google-ads-settings' ).submit();"><i class="fa-solid fa-check mr5"></i>Zapisz ustawienia Google Ads</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" style="margin-top: 25px;">
|
|
<div class="col-12">
|
|
<div class="settings-card">
|
|
<div class="settings-card-header">
|
|
<div class="settings-card-icon"><i class="fa-solid fa-robot"></i></div>
|
|
<div>
|
|
<h3>OpenAI (ChatGPT)</h3>
|
|
<small>Klucz API i model do optymalizacji tytułów i opisów produktów przez AI</small>
|
|
</div>
|
|
</div>
|
|
<form method="POST" id="openai-settings" action="/settings/save_openai">
|
|
<div class="settings-field" style="margin-bottom: 16px;">
|
|
<label class="settings-toggle-label">
|
|
<?php $openai_enabled = \services\GoogleAdsApi::get_setting( 'openai_enabled' ) !== '0'; ?>
|
|
<input type="hidden" name="openai_enabled" value="0" />
|
|
<input type="checkbox" name="openai_enabled" value="1" class="settings-toggle-checkbox" <?= $openai_enabled ? 'checked' : ''; ?> />
|
|
<span class="settings-toggle-switch"></span>
|
|
<span>Włącz OpenAI (ChatGPT)</span>
|
|
</label>
|
|
</div>
|
|
<div class="settings-fields-grid">
|
|
<div class="settings-field">
|
|
<label for="openai_api_key">API Key</label>
|
|
<div class="settings-input-wrap">
|
|
<input type="password" id="openai_api_key" name="openai_api_key" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'openai_api_key' ) ); ?>" placeholder="sk-..." />
|
|
<button type="button" class="settings-toggle-pw" onclick="password_toggle( this, 'openai_api_key' )">
|
|
<i class="fa-solid fa-eye"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="openai_model">Model</label>
|
|
<?php $current_model = \services\GoogleAdsApi::get_setting( 'openai_model' ) ?: 'gpt-5-mini'; ?>
|
|
<select id="openai_model" name="openai_model" class="form-control">
|
|
<option value="gpt-5.2" <?= $current_model === 'gpt-5.2' ? 'selected' : ''; ?>>GPT-5.2 (najnowszy, $1.75/$14 per 1M)</option>
|
|
<option value="gpt-5-mini" <?= $current_model === 'gpt-5-mini' ? 'selected' : ''; ?>>GPT-5 Mini (szybki, $0.25/$2 per 1M)</option>
|
|
<option value="gpt-4.1" <?= $current_model === 'gpt-4.1' ? 'selected' : ''; ?>>GPT-4.1</option>
|
|
<option value="gpt-4.1-mini" <?= $current_model === 'gpt-4.1-mini' ? 'selected' : ''; ?>>GPT-4.1 Mini</option>
|
|
<option value="gpt-4o" <?= $current_model === 'gpt-4o' ? 'selected' : ''; ?>>GPT-4o (legacy)</option>
|
|
<option value="gpt-4o-mini" <?= $current_model === 'gpt-4o-mini' ? 'selected' : ''; ?>>GPT-4o Mini (legacy)</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<button type="button" class="btn btn-success" onclick="$( '#openai-settings' ).submit();"><i class="fa-solid fa-check mr5"></i>Zapisz ustawienia OpenAI</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" style="margin-top: 25px;">
|
|
<div class="col-12">
|
|
<div class="settings-card">
|
|
<div class="settings-card-header">
|
|
<div class="settings-card-icon"><i class="fa-solid fa-brain"></i></div>
|
|
<div>
|
|
<h3>Claude (Anthropic)</h3>
|
|
<small>Klucz API i model Claude do optymalizacji tytułów i opisów produktów przez AI</small>
|
|
</div>
|
|
</div>
|
|
<form method="POST" id="claude-settings" action="/settings/save_claude">
|
|
<div class="settings-field" style="margin-bottom: 16px;">
|
|
<label class="settings-toggle-label">
|
|
<?php $claude_enabled = \services\GoogleAdsApi::get_setting( 'claude_enabled' ) !== '0'; ?>
|
|
<input type="hidden" name="claude_enabled" value="0" />
|
|
<input type="checkbox" name="claude_enabled" value="1" class="settings-toggle-checkbox" <?= $claude_enabled ? 'checked' : ''; ?> />
|
|
<span class="settings-toggle-switch"></span>
|
|
<span>Włącz Claude (Anthropic)</span>
|
|
</label>
|
|
</div>
|
|
<div class="settings-fields-grid">
|
|
<div class="settings-field">
|
|
<label for="claude_api_key">API Key</label>
|
|
<div class="settings-input-wrap">
|
|
<input type="password" id="claude_api_key" name="claude_api_key" class="form-control" value="<?= htmlspecialchars( \services\GoogleAdsApi::get_setting( 'claude_api_key' ) ); ?>" placeholder="sk-ant-..." />
|
|
<button type="button" class="settings-toggle-pw" onclick="password_toggle( this, 'claude_api_key' )">
|
|
<i class="fa-solid fa-eye"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="settings-field">
|
|
<label for="claude_model">Model</label>
|
|
<?php $current_claude_model = \services\GoogleAdsApi::get_setting( 'claude_model' ) ?: 'claude-sonnet-4-5-20250929'; ?>
|
|
<select id="claude_model" name="claude_model" class="form-control">
|
|
<option value="claude-opus-4-6" <?= $current_claude_model === 'claude-opus-4-6' ? 'selected' : ''; ?>>Claude Opus 4.6 (najpotężniejszy)</option>
|
|
<option value="claude-sonnet-4-5-20250929" <?= $current_claude_model === 'claude-sonnet-4-5-20250929' ? 'selected' : ''; ?>>Claude Sonnet 4.5 (zbalansowany)</option>
|
|
<option value="claude-haiku-4-5-20251001" <?= $current_claude_model === 'claude-haiku-4-5-20251001' ? 'selected' : ''; ?>>Claude Haiku 4.5 (szybki, tani)</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<button type="button" class="btn btn-success" onclick="$( '#claude-settings' ).submit();"><i class="fa-solid fa-check mr5"></i>Zapisz ustawienia Claude</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
function password_toggle( btn, id )
|
|
{
|
|
var icon = btn.querySelector( 'i' );
|
|
var input = document.getElementById( id );
|
|
|
|
if ( input.type === 'password' )
|
|
{
|
|
input.type = 'text';
|
|
icon.classList.remove( 'fa-eye' );
|
|
icon.classList.add( 'fa-eye-slash' );
|
|
}
|
|
else
|
|
{
|
|
input.type = 'password';
|
|
icon.classList.remove( 'fa-eye-slash' );
|
|
icon.classList.add( 'fa-eye' );
|
|
}
|
|
}
|
|
</script>
|