Sync: Inhalte aus origin/main in develop übernommen; .gitea und .github unverändert belassen (falls vorhanden).
All checks were successful
Deploy Workshop-Wahlen (DEV / PROD) / deploy (push) Successful in 13s
All checks were successful
Deploy Workshop-Wahlen (DEV / PROD) / deploy (push) Successful in 13s
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# Workshop-Wahlen – Entwickler-Übersicht
|
# Workshop-Wahlen
|
||||||
|
|
||||||
## Überblick
|
## Überblick
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,7 @@ function kc_teamer_page() {
|
|||||||
delete_option('kc_teamer_password_hash');
|
delete_option('kc_teamer_password_hash');
|
||||||
echo '<div class="notice notice-success">Teamer-Passwort entfernt.</div>';
|
echo '<div class="notice notice-success">Teamer-Passwort entfernt.</div>';
|
||||||
} else {
|
} else {
|
||||||
// Sichere Speicherung mit password_hash
|
update_option('kc_teamer_password_hash', wp_hash_password($pw));
|
||||||
$hash = password_hash($pw, PASSWORD_DEFAULT);
|
|
||||||
update_option('kc_teamer_password_hash', $hash);
|
|
||||||
echo '<div class="notice notice-success">Teamer-Passwort gespeichert.</div>';
|
echo '<div class="notice notice-success">Teamer-Passwort gespeichert.</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ function kc_teilnehmer_page() {
|
|||||||
echo '</details>';
|
echo '</details>';
|
||||||
}
|
}
|
||||||
// JS für Wahl- und Phasen-Filter
|
// JS für Wahl- und Phasen-Filter
|
||||||
// CSS moved to admin-teilnehmer.css
|
echo '<style>.kc-wahl-filter-btn.active{background:#4CAF50;color:#fff;} .kc-phase-filter-btn.active{background:#1976d2;color:#fff;}</style>';
|
||||||
echo '<script>
|
echo '<script>
|
||||||
(function() {
|
(function() {
|
||||||
var btns = Array.prototype.slice.call(document.querySelectorAll(".kc-wahl-filter-btn"));
|
var btns = Array.prototype.slice.call(document.querySelectorAll(".kc-wahl-filter-btn"));
|
||||||
|
|||||||
17
install.php
17
install.php
@@ -8,12 +8,12 @@ function kc_install_tables() {
|
|||||||
global $wpdb;
|
global $wpdb;
|
||||||
$prefix = $wpdb->prefix;
|
$prefix = $wpdb->prefix;
|
||||||
$charset_collate = $wpdb->get_charset_collate();
|
$charset_collate = $wpdb->get_charset_collate();
|
||||||
|
|
||||||
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
||||||
|
|
||||||
// --- Tabellen-Definitionen ---
|
// Tables definitions
|
||||||
$tables_sql = [];
|
$tables_sql = [];
|
||||||
|
|
||||||
// Wahl-Tabelle
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_wahlen (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_wahlen (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
name varchar(191) NOT NULL,
|
name varchar(191) NOT NULL,
|
||||||
@@ -26,7 +26,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Workshop-Tabelle
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_workshops (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_workshops (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
name varchar(191) NOT NULL,
|
name varchar(191) NOT NULL,
|
||||||
@@ -36,7 +35,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Teamer-Tabelle
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_teamer (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_teamer (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
vorname varchar(191) DEFAULT NULL,
|
vorname varchar(191) DEFAULT NULL,
|
||||||
@@ -44,7 +42,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Teilnehmer-Tabelle
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_teilnehmer (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_teilnehmer (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
vorname varchar(191) DEFAULT NULL,
|
vorname varchar(191) DEFAULT NULL,
|
||||||
@@ -58,7 +55,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Zuordnungstabelle Wahl <-> Workshops
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_wahl_workshops (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_wahl_workshops (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
wahl_id bigint(20) unsigned NOT NULL DEFAULT 0,
|
wahl_id bigint(20) unsigned NOT NULL DEFAULT 0,
|
||||||
@@ -67,7 +63,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Manuelle (Force-)Zuteilungen
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_force_zuteilung (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_force_zuteilung (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0,
|
teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0,
|
||||||
@@ -78,7 +73,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Ergebnis-Zuteilungen
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_zuteilung (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_zuteilung (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0,
|
teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0,
|
||||||
@@ -91,7 +85,6 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Zuordnung Workshop <-> Teamer
|
|
||||||
$tables_sql[] = "CREATE TABLE {$prefix}kc_workshop_teamer (
|
$tables_sql[] = "CREATE TABLE {$prefix}kc_workshop_teamer (
|
||||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
workshop_id bigint(20) unsigned DEFAULT NULL,
|
workshop_id bigint(20) unsigned DEFAULT NULL,
|
||||||
@@ -99,18 +92,18 @@ function kc_install_tables() {
|
|||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) $charset_collate";
|
) $charset_collate";
|
||||||
|
|
||||||
// Tabellen anlegen
|
|
||||||
foreach ($tables_sql as $sql) {
|
foreach ($tables_sql as $sql) {
|
||||||
dbDelta($sql);
|
dbDelta($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Migration: min_teilnehmer nachziehen, falls bei Update nötig
|
// Post-creation migration guard: ensure min_teilnehmer exists for older installs
|
||||||
$col = $wpdb->get_var($wpdb->prepare("SHOW COLUMNS FROM {$prefix}kc_workshops LIKE %s", 'min_teilnehmer'));
|
$col = $wpdb->get_var($wpdb->prepare("SHOW COLUMNS FROM {$prefix}kc_workshops LIKE %s", 'min_teilnehmer'));
|
||||||
if (empty($col)) {
|
if (empty($col)) {
|
||||||
|
// try to add the column (no-op on newer installs)
|
||||||
$wpdb->query("ALTER TABLE {$prefix}kc_workshops ADD COLUMN min_teilnehmer INT NOT NULL DEFAULT 0");
|
$wpdb->query("ALTER TABLE {$prefix}kc_workshops ADD COLUMN min_teilnehmer INT NOT NULL DEFAULT 0");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Plugin-Version speichern
|
// Optionally store plugin version
|
||||||
add_option('kc_workshopwahl_db_version', '1.0');
|
add_option('kc_workshopwahl_db_version', '1.0');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Plugin Name: Workshop-Wahlen
|
* Plugin Name: Workshop-Wahlen
|
||||||
* Description: Workshop-Wahl-System für Konfi-Castle.com
|
* Description: Workshop-Wahl-System für Konfi-Castle.com
|
||||||
* Version: 1.1 - dev
|
* Version: 1.0
|
||||||
* Author: Linus Maximilian Nilson
|
* Author: Linus Maximilian Nilson
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
if (!defined('ABSPATH')) exit;
|
if (!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
// Stylesheet einbinden
|
// Stylesheet einbinden
|
||||||
|
|
||||||
add_action('admin_enqueue_scripts', function($hook) {
|
add_action('admin_enqueue_scripts', function($hook) {
|
||||||
// Nur auf den Plugin-Seiten laden (optional: prüfe $hook!)
|
// Nur auf den Plugin-Seiten laden (optional: prüfe $hook!)
|
||||||
if (strpos($hook, 'kc_') !== false) {
|
if (strpos($hook, 'kc_') !== false) {
|
||||||
wp_enqueue_style(
|
wp_enqueue_style(
|
||||||
'kc-admin-style',
|
'kc-admin-style',
|
||||||
plugin_dir_url(__FILE__) . 'assets/kc-admin.css',
|
plugin_dir_url(__FILE__) . 'assets/kc-admin-style.css',
|
||||||
[],
|
[],
|
||||||
filemtime(plugin_dir_path(__FILE__) . 'assets/kc-admin.css')
|
filemtime(plugin_dir_path(__FILE__) . 'assets/kc-admin-style.css')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -33,14 +31,10 @@ add_action('admin_enqueue_scripts', function($hook) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
add_action('wp_enqueue_scripts', function() {
|
add_action('wp_enqueue_scripts', function() {
|
||||||
wp_enqueue_style('kc-workshopwahl-frontend', plugins_url('assets/frontend.css', __FILE__));
|
wp_enqueue_style('kc-workshopwahl-form', plugins_url('assets/frontend-form.css', __FILE__));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Zentrale Admin-Menüstruktur
|
// Zentrale Admin-Menüstruktur
|
||||||
add_action('admin_menu', function() {
|
add_action('admin_menu', function() {
|
||||||
add_menu_page('Wahlen', 'Wahlen', 'manage_options', 'kc_wahlen', 'kc_wahlen_page');
|
add_menu_page('Wahlen', 'Wahlen', 'manage_options', 'kc_wahlen', 'kc_wahlen_page');
|
||||||
|
|||||||
Reference in New Issue
Block a user