css
Some checks failed
Deploy Workshop-Wahlen (DEV / PROD) / deploy (push) Failing after 12s

This commit is contained in:
ProgrammGamer
2026-01-30 17:51:13 +01:00
parent 6203a74a2d
commit f216c558c3
3 changed files with 20 additions and 322 deletions

View File

@@ -1,105 +0,0 @@
.kc-form-container {
box-sizing: border-box;
width: 100%;
max-width: 680px;
margin: 28px auto;
background: #f8fbe7;
border-left: 8px solid #b6d333;
border-radius: 14px;
box-shadow: 0 5px 22px #8eae291a;
padding: 28px 22px;
font-family: 'Segoe UI', Arial, sans-serif;
}
.kc-form-container h2 {
color: #3b5323;
font-family: 'Montserrat', Arial, sans-serif;
font-size: 2em;
margin-top: 0;
margin-bottom: 0.5em;
letter-spacing: -1px;
}
.kc-form-row {
margin-bottom: 22px;
}
.kc-form-row label {
display: block;
font-weight: 700;
color: #1c3866;
margin-bottom: 7px;
font-size: 1.07em;
}
.kc-form-row select,
.kc-form-row input[type="text"],
.kc-form-row input[type="email"],
.kc-form-row input[type="number"] {
box-sizing: border-box;
width: 100%;
padding: 10px;
border: 1.7px solid #d6e39f;
border-radius: 5px;
background: #fcffe9;
font-size: 1.09em;
margin-top: 3px;
transition: border .2s;
}
.kc-form-row input[type="text"]:focus,
.kc-form-row select:focus {
outline: none;
border-color: #b6d333;
background: #fffde8;
}
.kc-form-row input[type="submit"] {
background: #2f5393;
color: #fff;
padding: 13px 28px;
font-weight: bold;
font-size: 1.13em;
border: 0;
border-radius: 7px;
cursor: pointer;
margin-top: 6px;
box-shadow: 0 2px 8px #1c38661a;
transition: background .2s;
}
.kc-form-row input[type="submit"]:hover {
background: #1c3866;
}
.kc-required {
color: #e42626;
font-weight: bold;
}
.kc-success-msg {
color: #288830;
background: #f2fbe2;
border-left: 4px solid #b6d333;
padding: 15px 15px 15px 22px;
margin-bottom: 25px;
font-size: 1.1em;
border-radius: 7px;
}
.kc-error-msg {
color: #a80000;
background: #ffeaea;
border-left: 4px solid #e12b2b;
padding: 15px 15px 15px 22px;
margin-bottom: 25px;
font-size: 1.1em;
border-radius: 7px;
}
@media (max-width: 900px) {
.kc-form-container {padding:20px 14px;}
}
@media (max-width: 520px) {
.kc-form-container {padding:14px 10px;border-radius:10px;margin:14px 10px;}
.kc-form-container h2 {font-size:1.4em}
.kc-form-row {margin-bottom:14px}
}
[Diese Datei ist leer.]

View File

@@ -1,204 +0,0 @@
.kc-admin-tabs {
margin-bottom: 28px;
border-bottom: 2px solid #e0e6ef;
background: #f8fbe7;
border-radius: 18px 18px 0 0;
box-shadow: 0 1px 10px #b6d33321;
padding: 8px 18px 0 18px;
}
.kc-tabnav {
display: inline-block;
padding: 12px 32px 11px 32px;
border-radius: 12px 12px 0 0;
font-weight: 700;
font-size: 1.12em;
margin-right: 7px;
box-shadow: 0 2px 11px #b6d33318;
text-decoration: none;
background: #f8fbe7;
color: #4176be;
border: none;
outline: none;
transition: all .18s;
letter-spacing: 0.5px;
}
.kc-tabnav-active,
.kc-tabnav:focus,
.kc-tabnav:hover {
background: linear-gradient(90deg, #326dd2 0%, #b6d333 100%);
color: #fff !important;
box-shadow: 0 6px 24px #326dd241;
font-weight: 800;
letter-spacing: 1px;
}
.kc-admin-table-wrap {
box-sizing: border-box;
background: #fff;
border-radius: 17px;
box-shadow: 0 4px 28px #326dd21c, 0 1.5px 7px #b6d33324;
padding: 28px 22px 30px 22px;
margin: 28px 0;
/* allow children to overflow (tables may scroll), don't clip action buttons */
overflow: visible;
}
/* Collapsible details styling for admin Zuteilungen */
details.kc-wahl-details, details.kc-phase-details {
background: #fff;
border: 1px solid #e9eef6;
border-radius: 10px;
padding: 8px;
margin-bottom: 12px;
}
details.kc-wahl-details > summary, details.kc-phase-details > summary {
list-style: none;
cursor: pointer;
padding: 8px 10px;
}
details.kc-wahl-details[open] > summary, details.kc-phase-details[open] > summary {
background: linear-gradient(90deg,#f2f9ff 0%, #f6fff5 100%);
border-radius: 8px;
}
/* Wahl summary layout */
details.kc-wahl-details > summary { display: flex; align-items: center; justify-content: space-between; }
details.kc-wahl-details > summary .kc-wahl-title { font-weight:700; color:#2b5f9a; }
details.kc-wahl-details > summary .kc-wahl-actions { margin-left: 12px; }
details.kc-wahl-details .kc-wahl-actions .kc-btn { margin-left:8px; }
/* Workshop card inside phase */
.kc-workshop-card {
background: #f9f9f9;
padding: 10px;
margin: 8px 0;
border-radius: 8px;
box-shadow: 0 1px 6px #00000012;
}
.kc-workshop-card table { margin-top:8px; }
.kc-workshop-card b { font-size: 1.05em; }
.kc-workshop-card .kc-count { color:#555; font-size:0.92em; }
.kc-unassigned {
background: #fff6f6;
border-left: 4px solid #f2b0b0;
padding: 10px;
margin-top: 8px;
border-radius: 6px;
}
/* Smaller tweaks for details summaries inside admin area */
details summary { outline: none; }
details summary::-webkit-details-marker { display: none; }
details summary:before { content: '\25B6'; display:inline-block; transform:rotate(90deg); margin-right:8px; }
details[open] summary:before { transform: rotate(0deg); }
.kc-admin-table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
margin-bottom: 28px;
background: #fafdff;
border-radius: 13px;
overflow: auto; /* horizontal scroll on small screens */
box-shadow: 0 2px 12px #b6d33313;
}
.kc-admin-table th, .kc-admin-table td {
padding: 13px 18px;
text-align: left;
font-size: 1.07em;
vertical-align: middle;
}
.kc-admin-table thead {
background: #eaf6ff;
color: #4176be;
font-weight: 800;
}
.kc-admin-table tbody tr {
border-bottom: 1px solid #eef3fa;
}
.kc-admin-table tbody tr:nth-child(even) {
background: #f8fbe7;
}
.kc-admin-table tbody tr:hover {
background: #e0ebf6;
transition: background 0.2s;
}
.kc-admin-table th {
font-weight: bold;
border-bottom: 2px solid #b6d33342;
}
.kc-admin-table .kc-actions {
white-space: nowrap;
display: flex;
gap: 8px;
align-items: center;
justify-content: flex-end;
flex-wrap: wrap; /* allow buttons to wrap on very small widths */
}
.kc-btn {
background: linear-gradient(90deg,#4176be 40%, #b6d333 100%);
color: #fff;
padding: 10px 25px;
border-radius: 8px;
border: 0;
margin: 0 5px;
font-weight: 700;
cursor: pointer;
display: inline-block;
text-decoration: none;
font-size: 1.04em;
box-shadow: 0 1.5px 6px #b6d33321;
transition: background .17s, box-shadow .19s;
}
.kc-btn.del {
background: #e12b2b !important;
color: #fff;
}
.kc-btn.edit {
background: #ff9800 !important;
color: #fff;
}
.kc-btn:hover {
opacity: 0.91;
background: linear-gradient(90deg,#26529e 40%, #97b321 100%);
color: #fff;
box-shadow: 0 3px 10px #4176be29;
}
.notice-success {
background: #f6ffed;
border-left: 6px solid #b6d333;
color: #1c5322;
padding: 13px 20px;
margin: 0 0 22px 0;
border-radius: 9px;
font-size: 1.08em;
font-weight: 500;
}
.notice-error {
background: #fff3f3;
border-left: 6px solid #e12b2b;
color: #9d1d2e;
padding: 13px 20px;
margin: 0 0 22px 0;
border-radius: 9px;
font-size: 1.08em;
font-weight: 500;
}
.kc-required {
color: #e42626;
font-weight: bold;
margin-left: 2px;
}
@media (max-width: 800px) {
.kc-admin-table-wrap {padding: 12px;}
.kc-admin-table th, .kc-admin-table td {padding: 8px 6px;}
.kc-btn {padding: 8px 13px;}
}
@media (max-width: 600px) {
/* Make tables readable on mobile by switching to block rows */
.kc-admin-table thead { display: none; }
.kc-admin-table, .kc-admin-table tbody, .kc-admin-table tr, .kc-admin-table td { display: block; width: 100%; }
.kc-admin-table tr { margin-bottom: 12px; border-bottom: 1px solid #eef3fa; }
.kc-admin-table td { text-align: left; padding: 10px 12px; white-space: normal; }
.kc-admin-table td:before { content: attr(data-label); font-weight:700; display:block; margin-bottom:6px; color:#4176be; }
}
[Diese Datei ist leer.]

View File

@@ -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');
// Tables definitions // --- Tabellen-Definitionen ---
$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,6 +26,7 @@ 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,
@@ -35,6 +36,7 @@ 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,
@@ -42,6 +44,7 @@ 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,
@@ -51,10 +54,11 @@ function kc_install_tables() {
wunsch1 bigint(20) unsigned DEFAULT NULL, wunsch1 bigint(20) unsigned DEFAULT NULL,
wunsch2 bigint(20) unsigned DEFAULT NULL, wunsch2 bigint(20) unsigned DEFAULT NULL,
wunsch3 bigint(20) unsigned DEFAULT NULL, wunsch3 bigint(20) unsigned DEFAULT NULL,
deleted tinyint(1) NOT NULL DEFAULT 0, deleted tinyint(1) NOT NULL DEFAULT 0,
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,
@@ -63,6 +67,7 @@ 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,
@@ -73,6 +78,7 @@ 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,
@@ -85,25 +91,26 @@ function kc_install_tables() {
PRIMARY KEY (id) PRIMARY KEY (id)
) $charset_collate"; ) $charset_collate";
$tables_sql[] = "CREATE TABLE {$prefix}kc_workshop_teamer ( // Zuordnung Workshop <-> Teamer
id bigint(20) unsigned NOT NULL AUTO_INCREMENT, $tables_sql[] = "CREATE TABLE {$prefix}kc_workshop_teamer (
workshop_id bigint(20) unsigned DEFAULT NULL, id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
teamer_id bigint(20) unsigned DEFAULT NULL, workshop_id bigint(20) unsigned DEFAULT NULL,
PRIMARY KEY (id) teamer_id bigint(20) unsigned DEFAULT NULL,
) $charset_collate"; PRIMARY KEY (id)
) $charset_collate";
// Tabellen anlegen
foreach ($tables_sql as $sql) { foreach ($tables_sql as $sql) {
dbDelta($sql); dbDelta($sql);
} }
// Post-creation migration guard: ensure min_teilnehmer exists for older installs // Migration: min_teilnehmer nachziehen, falls bei Update nötig
$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");
} }
// Optionally store plugin version // Plugin-Version speichern
add_option('kc_workshopwahl_db_version', '1.0'); add_option('kc_workshopwahl_db_version', '1.0');
} }