admin: make phase select dependent on chosen Wahl (dynamic phases)
All checks were successful
Deploy Workshop-Wahlen (DEV / PROD) / deploy (push) Successful in 12s
All checks were successful
Deploy Workshop-Wahlen (DEV / PROD) / deploy (push) Successful in 12s
This commit is contained in:
@@ -32,7 +32,7 @@ function kc_force_zuteilung_page() {
|
|||||||
// Listen f<>r Dropdowns
|
// Listen f<>r Dropdowns
|
||||||
$teilnehmer_liste = $wpdb->get_results("SELECT * FROM {$prefix}kc_teilnehmer ORDER BY nachname, vorname");
|
$teilnehmer_liste = $wpdb->get_results("SELECT * FROM {$prefix}kc_teilnehmer ORDER BY nachname, vorname");
|
||||||
$workshop_liste = $wpdb->get_results("SELECT * FROM {$prefix}kc_workshops ORDER BY name");
|
$workshop_liste = $wpdb->get_results("SELECT * FROM {$prefix}kc_workshops ORDER BY name");
|
||||||
$wahlen = $wpdb->get_results("SELECT id, name FROM {$prefix}kc_wahlen WHERE deleted=0 ORDER BY name");
|
$wahlen = $wpdb->get_results("SELECT id, name, COALESCE(anzahl_einheiten,1) AS anzahl_einheiten FROM {$prefix}kc_wahlen WHERE deleted=0 ORDER BY name");
|
||||||
|
|
||||||
// Bearbeiten
|
// Bearbeiten
|
||||||
if (isset($_GET['edit_force'])) {
|
if (isset($_GET['edit_force'])) {
|
||||||
@@ -106,11 +106,46 @@ function kc_force_zuteilung_page() {
|
|||||||
|
|
||||||
echo '</form>';
|
echo '</form>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
|
// Prepare JS mapping of wahl_id -> number of phases
|
||||||
|
$wahl_phases = [];
|
||||||
|
foreach ($wahlen as $w) $wahl_phases[intval($w->id)] = intval($w->anzahl_einheiten);
|
||||||
|
|
||||||
|
echo '<script>var kcWahlPhases = ' . wp_json_encode($wahl_phases) . ';</script>';
|
||||||
echo '<script>
|
echo '<script>
|
||||||
jQuery(function($){
|
jQuery(function($){
|
||||||
$("#kc-force-teilnehmer-dropdown").select2({placeholder:"Teilnehmer auswählen…",allowClear:true});
|
$("#kc-force-teilnehmer-dropdown").select2({placeholder:"Teilnehmer auswählen…",allowClear:true});
|
||||||
$("#kc-force-wahl-dropdown").select2({placeholder:"Wahl auswählen…",allowClear:true});
|
$("#kc-force-wahl-dropdown").select2({placeholder:"Wahl auswählen…",allowClear:true});
|
||||||
$("#kc-force-workshop-dropdown").select2({placeholder:"Workshop auswählen…",allowClear:true});
|
$("#kc-force-workshop-dropdown").select2({placeholder:"Workshop auswählen…",allowClear:true});
|
||||||
|
|
||||||
|
function refreshPhaseSelect($wahlSelect, $phaseSelect, current) {
|
||||||
|
var wid = parseInt($wahlSelect.val(),10);
|
||||||
|
var max = (wid && kcWahlPhases[wid]) ? parseInt(kcWahlPhases[wid],10) : 1;
|
||||||
|
$phaseSelect.empty();
|
||||||
|
for(var i=1;i<=max;i++){
|
||||||
|
var opt = $('<option>').val(i).text(i + (i===1? ' (Phase)':' (Phase)'));
|
||||||
|
$phaseSelect.append(opt);
|
||||||
|
}
|
||||||
|
if (current) {
|
||||||
|
$phaseSelect.val(current);
|
||||||
|
}
|
||||||
|
$phaseSelect.prop('disabled', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind change for all existing wahl selects on the page
|
||||||
|
$(document).on('change', '#kc-force-wahl-dropdown', function(){
|
||||||
|
var $w = $(this);
|
||||||
|
var $phase = $w.closest('form').find('[name="phase"]');
|
||||||
|
refreshPhaseSelect($w, $phase);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Initialize existing phase selects based on their selected wahl
|
||||||
|
$('[name="phase"]').each(function(){
|
||||||
|
var $phase = $(this);
|
||||||
|
var $form = $phase.closest('form');
|
||||||
|
var $wahl = $form.find('#kc-force-wahl-dropdown');
|
||||||
|
var current = $phase.val();
|
||||||
|
refreshPhaseSelect($wahl, $phase, current);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>';
|
</script>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
|
|||||||
Reference in New Issue
Block a user