Update from Git Manager GUI
This commit is contained in:
@@ -61,12 +61,17 @@ if ( ! function_exists('wbf_get_settings') ) {
|
||||
'discord_client_secret' => '',
|
||||
'discord_role_sync' => '0', // Rollen-Sync aktiviert?
|
||||
'discord_role_map' => '', // JSON: {"discord_role_id":"forum_role_key"}
|
||||
// Minecraft Bridge
|
||||
'mc_bridge_enabled' => '0',
|
||||
'mc_bridge_api_url' => '',
|
||||
'mc_bridge_api_secret' => '',
|
||||
];
|
||||
|
||||
$saved = get_option( 'wbf_settings', [] );
|
||||
|
||||
// Fehlende Keys mit Defaults auffüllen, leere Strings ignorieren
|
||||
return array_merge( $defaults, array_filter( (array) $saved, 'strlen' ) );
|
||||
// Keine Filterung mehr, damit auch bewusst geleerte Felder gespeichert werden
|
||||
return array_merge( $defaults, (array) $saved );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,9 +163,13 @@ function wbf_admin_settings() {
|
||||
}
|
||||
$settings['discord_role_map'] = json_encode($role_map);
|
||||
|
||||
// ── Minecraft Bridge ──────────────────────────────────────────────────
|
||||
$settings['mc_bridge_api_url'] = esc_url_raw( trim( $_POST['mc_bridge_api_url'] ?? '' ) );
|
||||
$settings['mc_bridge_api_secret'] = sanitize_text_field( $_POST['mc_bridge_api_secret'] ?? '' );
|
||||
|
||||
// Checkbox-Felder explizit als '0' speichern wenn nicht angehakt,
|
||||
// damit array_filter(...,'strlen') sie nicht wegwirft und der Default '1' greift.
|
||||
$checkbox_fields = ['maintenance_mode', 'rules_enabled', 'rules_accept_required'];
|
||||
$checkbox_fields = ['maintenance_mode', 'rules_enabled', 'rules_accept_required', 'mc_bridge_enabled'];
|
||||
foreach ( $checkbox_fields as $cb ) {
|
||||
$settings[$cb] = isset($_POST[$cb]) && $_POST[$cb] === '1' ? '1' : '0';
|
||||
}
|
||||
@@ -731,6 +740,116 @@ function wbf_admin_settings() {
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════
|
||||
Minecraft Bridge
|
||||
════════════════════════════════════════════════════════════ -->
|
||||
<div class="wbf-settings-box" style="margin-top:2rem;padding:1.5rem;border:1px solid #e5e7eb;border-radius:8px;background:#f9fafb">
|
||||
<h2 style="margin-top:0;display:flex;align-items:center;gap:8px">
|
||||
<span style="font-size:1.3em">⛏️</span> Minecraft Bridge
|
||||
</h2>
|
||||
<p class="description" style="margin-bottom:1.2rem;color:#6b7280">
|
||||
Verbindet das Forum mit deinem BungeeCord-Server (StatusAPI Plugin).
|
||||
Spieler können ihren Forum-Account mit <code>/forumlink <token></code> verknüpfen
|
||||
und erhalten dann Ingame-Benachrichtigungen bei neuen Antworten, Erwähnungen und PNs.
|
||||
</p>
|
||||
|
||||
<table class="form-table" role="presentation">
|
||||
<tr>
|
||||
<th scope="row">Aktiviert</th>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" name="mc_bridge_enabled" value="1"
|
||||
<?php checked( '1', $s['mc_bridge_enabled'] ?? '0' ); ?>>
|
||||
Minecraft Bridge aktivieren
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="wbf_mc_api_url">StatusAPI URL</label></th>
|
||||
<td>
|
||||
<input type="url" id="wbf_mc_api_url" name="mc_bridge_api_url"
|
||||
value="<?php echo esc_attr( $s['mc_bridge_api_url'] ?? '' ); ?>"
|
||||
class="regular-text"
|
||||
placeholder="http://dein-server:9191">
|
||||
<p class="description">
|
||||
IP + Port deines BungeeCord StatusAPI Servers.
|
||||
Beispiel: <code>http://192.168.1.100:9191</code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="wbf_mc_api_secret">API Secret</label></th>
|
||||
<td>
|
||||
<input type="password" id="wbf_mc_api_secret" name="mc_bridge_api_secret"
|
||||
value="<?php echo esc_attr( $s['mc_bridge_api_secret'] ?? '' ); ?>"
|
||||
class="regular-text"
|
||||
autocomplete="new-password"
|
||||
placeholder="Gemeinsames Passwort">
|
||||
<p class="description">
|
||||
Muss identisch sein mit <code>forum.api_secret</code> in der
|
||||
<code>verify.properties</code> des StatusAPI Plugins.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Verbindungstest</th>
|
||||
<td>
|
||||
<button type="button" id="wbf-mc-test-btn" class="button"
|
||||
onclick="wbfTestMcConnection()">
|
||||
🔌 Verbindung testen
|
||||
</button>
|
||||
<span id="wbf-mc-test-result" style="margin-left:10px;font-weight:600"></span>
|
||||
<script>
|
||||
function wbfTestMcConnection() {
|
||||
var btn = document.getElementById('wbf-mc-test-btn');
|
||||
var result = document.getElementById('wbf-mc-test-result');
|
||||
var url = document.getElementById('wbf_mc_api_url').value.replace(/\/$/, '');
|
||||
if (!url) { result.style.color='#dc2626'; result.textContent = '❌ Bitte erst eine URL eingeben.'; return; }
|
||||
btn.disabled = true;
|
||||
result.style.color = '#6b7280';
|
||||
result.textContent = '⏳ Teste Verbindung...';
|
||||
// Test gegen WordPress REST-Endpoint (sicherer als direkter BungeeCord-Aufruf vom Browser)
|
||||
fetch('<?php echo esc_url( rest_url("mc-bridge/v1/status") ); ?>')
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(d) {
|
||||
if (d.success) {
|
||||
result.style.color = '#16a34a';
|
||||
result.innerHTML = '✅ <strong>WordPress-Endpoint aktiv!</strong> Plugin v' + (d.version || '?');
|
||||
} else {
|
||||
result.style.color = '#dc2626';
|
||||
result.textContent = '⚠️ Endpoint antwortet, aber Fehler: ' + JSON.stringify(d);
|
||||
}
|
||||
})
|
||||
.catch(function(e) {
|
||||
result.style.color = '#dc2626';
|
||||
result.textContent = '❌ Nicht erreichbar: ' + e.message;
|
||||
})
|
||||
.finally(function() { btn.disabled = false; });
|
||||
}
|
||||
</script>
|
||||
<p class="description" style="margin-top:.5rem">
|
||||
Testet ob der WordPress REST-Endpoint <code>/wp-json/mc-bridge/v1/status</code> erreichbar ist.
|
||||
Danach in <code>verify.properties</code>: <code>forum.wp_url</code> und <code>forum.api_secret</code> eintragen.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div style="background:#fffbeb;border:1px solid #fcd34d;border-radius:6px;padding:1rem;margin-top:1rem;font-size:.875rem">
|
||||
<strong>⚙️ Einrichtung in 3 Schritten:</strong>
|
||||
<ol style="margin:.5rem 0 0 1.2rem;padding:0;line-height:1.8">
|
||||
<li>API Secret hier festlegen und Einstellungen speichern.</li>
|
||||
<li>In <code>verify.properties</code> des BungeeCord-Plugins setzen:
|
||||
<br><code>forum.enabled=true</code>
|
||||
<br><code>forum.wp_url=<?php echo esc_html( get_site_url() ); ?></code>
|
||||
<br><code>forum.api_secret=DEIN_SECRET</code>
|
||||
</li>
|
||||
<li>Spieler können sich nun mit <strong><code>/forumlink <token></code></strong> ingame verknüpfen.
|
||||
Den Token generieren sie in ihrem Forum-Profil unter dem Tab <em>Verbindungen</em>.</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php submit_button(
|
||||
'💾 Einstellungen speichern',
|
||||
'primary',
|
||||
|
||||
Reference in New Issue
Block a user