develop loesung zu Lösung #3
@@ -32,7 +32,7 @@ function kc_force_zuteilung_page() {
|
||||
// Listen f<>r Dropdowns
|
||||
$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");
|
||||
$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
|
||||
if (isset($_GET['edit_force'])) {
|
||||
@@ -106,11 +106,46 @@ function kc_force_zuteilung_page() {
|
||||
|
||||
echo '</form>';
|
||||
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>
|
||||
jQuery(function($){
|
||||
$("#kc-force-teilnehmer-dropdown").select2({placeholder:"Teilnehmer 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});
|
||||
|
||||
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>';
|
||||
echo '</div>';
|
||||
|
||||
Reference in New Issue
Block a user