feat: implement phase 4 interactive cooking mode and workspace rules
This commit is contained in:
@@ -178,6 +178,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
// helpers
|
||||
$parse_csv = fn($text) => array_values(array_filter(array_map('trim', explode(',', $text ?? '')), 'strlen'));
|
||||
$parse_lines = fn($text) => array_values(array_filter(array_map('trim', preg_split('/\\r?\\n/', $text ?? '')), 'strlen'));
|
||||
$parse_lines_exact = fn($text) => array_map('trim', preg_split('/\\r?\\n/', $text ?? ''));
|
||||
|
||||
$titleEn = trim($_POST['title_en'] ?? '');
|
||||
$titleDe = trim($_POST['title_de'] ?? '');
|
||||
@@ -200,6 +201,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
$utensilsDe = $parse_lines($_POST['utensils_de'] ?? '');
|
||||
$stepsEn = $parse_lines($_POST['steps_en'] ?? '');
|
||||
$stepsDe = $parse_lines($_POST['steps_de'] ?? '');
|
||||
$stepVideosEn = $parse_lines_exact($_POST['step_videos_en'] ?? '');
|
||||
$stepVideosDe = $parse_lines_exact($_POST['step_videos_de'] ?? '');
|
||||
$stepTimersEn = $parse_lines_exact($_POST['step_timers_en'] ?? '');
|
||||
$stepTimersDe = $parse_lines_exact($_POST['step_timers_de'] ?? '');
|
||||
$featured = isset($_POST['featured']) && $_POST['featured'] === '1';
|
||||
$comingSoon = isset($_POST['coming_soon']) && $_POST['coming_soon'] === '1';
|
||||
$slugOriginal = trim($_POST['slug_original'] ?? '');
|
||||
@@ -229,6 +234,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
$utensilsDe = !empty($utensilsDe) ? $utensilsDe : ($prevDe['utensils'] ?? []);
|
||||
$stepsEn = !empty($stepsEn) ? $stepsEn : ($prevEn['steps'] ?? []);
|
||||
$stepsDe = !empty($stepsDe) ? $stepsDe : ($prevDe['steps'] ?? []);
|
||||
$stepVideosEn = !empty($stepVideosEn) ? $stepVideosEn : ($prevEn['step_videos'] ?? []);
|
||||
$stepVideosDe = !empty($stepVideosDe) ? $stepVideosDe : ($prevDe['step_videos'] ?? []);
|
||||
$stepTimersEn = !empty($stepTimersEn) ? $stepTimersEn : ($prevEn['step_timers'] ?? []);
|
||||
$stepTimersDe = !empty($stepTimersDe) ? $stepTimersDe : ($prevDe['step_timers'] ?? []);
|
||||
|
||||
if ($titleEn === '') {
|
||||
$message = 'English title is required.';
|
||||
@@ -282,6 +291,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
'ingredients' => $ingredientsEn,
|
||||
'utensils' => $utensilsEn,
|
||||
'steps' => $stepsEn,
|
||||
'step_videos' => $stepVideosEn,
|
||||
'step_timers' => $stepTimersEn,
|
||||
],
|
||||
'de' => [
|
||||
'title' => $titleDe ?: $titleEn,
|
||||
@@ -292,6 +303,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
'ingredients' => !empty($ingredientsDe) ? $ingredientsDe : $ingredientsEn,
|
||||
'utensils' => !empty($utensilsDe) ? $utensilsDe : $utensilsEn,
|
||||
'steps' => !empty($stepsDe) ? $stepsDe : $stepsEn,
|
||||
'step_videos' => !empty($stepVideosDe) ? $stepVideosDe : $stepVideosEn,
|
||||
'step_timers' => !empty($stepTimersDe) ? $stepTimersDe : $stepTimersEn,
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -578,6 +591,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
<textarea name="utensils_en" placeholder="12" skillet Sheet pan Rubber spatula"><?php echo isset($editingEn['utensils']) ? e(implode("\n", $editingEn['utensils'])) : ''; ?></textarea>
|
||||
<label>Steps (EN, one per line) *</label>
|
||||
<textarea name="steps_en" placeholder="Preheat oven... Mix dry ingredients..."><?php echo isset($editingEn['steps']) ? e(implode("\n", $editingEn['steps'])) : ''; ?></textarea>
|
||||
<label>Step Videos (EN, matching steps line by line)</label>
|
||||
<textarea name="step_videos_en" placeholder="https://...mp4 "><?php echo isset($editingEn['step_videos']) ? e(implode("\n", $editingEn['step_videos'])) : ''; ?></textarea>
|
||||
<label>Step Timers (EN, matching steps line by line, in minutes)</label>
|
||||
<textarea name="step_timers_en" placeholder="0 15"><?php echo isset($editingEn['step_timers']) ? e(implode("\n", $editingEn['step_timers'])) : ''; ?></textarea>
|
||||
|
||||
<hr>
|
||||
<h3>Deutsch</h3>
|
||||
@@ -610,6 +627,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
|
||||
<textarea name="utensils_de" placeholder="Pfanne Kochtopf"><?php echo isset($editingDe['utensils']) ? e(implode("\n", $editingDe['utensils'])) : ''; ?></textarea>
|
||||
<label>Schritte (DE, eine pro Zeile)</label>
|
||||
<textarea name="steps_de" placeholder="Backofen vorheizen... Teig kneten..."><?php echo isset($editingDe['steps']) ? e(implode("\n", $editingDe['steps'])) : ''; ?></textarea>
|
||||
<label>Step Videos (DE)</label>
|
||||
<textarea name="step_videos_de"><?php echo isset($editingDe['step_videos']) ? e(implode("\n", $editingDe['step_videos'])) : ''; ?></textarea>
|
||||
<label>Step Timers (DE)</label>
|
||||
<textarea name="step_timers_de"><?php echo isset($editingDe['step_timers']) ? e(implode("\n", $editingDe['step_timers'])) : ''; ?></textarea>
|
||||
|
||||
<label><input type="checkbox" name="featured" value="1" <?php echo !empty($editing['featured']) ? 'checked' : ''; ?>> Mark as featured</label>
|
||||
<label><input type="checkbox" name="coming_soon" value="1" <?php echo !empty($editing['coming_soon']) ? 'checked' : ''; ?>> Mark as coming soon (name & image only)</label>
|
||||
|
||||
Reference in New Issue
Block a user