diff --git a/admin/DashboardController.php b/admin/DashboardController.php index 3676853..cba9499 100644 --- a/admin/DashboardController.php +++ b/admin/DashboardController.php @@ -2917,15 +2917,24 @@ HTML; $showEp = ($ft === 'function' && $fFn === 'api_report') ? 'display:flex;flex-direction:column;gap:8px;margin-top:8px' : 'display:none'; - $showCollect = $ft === 'collect_input' - ? 'display:flex;flex-direction:column;gap:8px' - : 'display:none'; - $showDynList = $ft === 'dynamic_list' - ? 'display:flex;flex-direction:column;gap:8px' - : 'display:none'; - $showSubmit = $ft === 'submit_form' - ? 'display:flex;flex-direction:column;gap:8px' - : 'display:none'; + $showCollect = $ft === 'collect_input' ? 'display:flex;flex-direction:column;gap:8px' : 'display:none'; + $showDynList = $ft === 'dynamic_list' ? 'display:flex;flex-direction:column;gap:8px' : 'display:none'; + $showSubmit = $ft === 'submit_form' ? 'display:flex;flex-direction:column;gap:8px' : 'display:none'; + $showForEach = $ft === 'collect_for_each' ? 'display:flex;flex-direction:column;gap:8px' : 'display:none'; + + $feEpSelHtml = ''; + foreach ($companyEndpoints as $ep) { + $sel = $srcEp === self::h($ep['endpoint_key']) ? ' selected' : ''; + $feEpSelHtml .= ''; + } + $feUpEpSelHtml = ''; + $feUpEpKey = self::h($flow['endpoint_key'] ?? ''); + foreach ($companyEndpoints as $ep) { + $sel = $feUpEpKey === self::h($ep['endpoint_key']) ? ' selected' : ''; + $feUpEpSelHtml .= ''; + } + $feQuestion = self::h($flow['question'] ?? ''); + $feSuccessText = self::h($flow['success_text'] ?? ''); $fnOpts = ''; foreach (['goodbye' => '↩️ Salir (goodbye)', 'api_report' => '📄 Descargar informe', 'forward_to_ai' => '🤖 Escalar a IA', 'forward_to_agent' => '👤 Escalar a agente'] as $fv => $fl) { @@ -2956,9 +2965,10 @@ HTML; - - - + + + + @@ -3028,6 +3038,21 @@ HTML; + +
+
+
+
+
+
+
+
+
+
+
+
+
+ "; @@ -3284,12 +3309,13 @@ function flowTabChange(sel) { const v = sel.value; // flex sections need display:flex; block sections use '' (default block) const sections = { - 'ftg-text': {show: v==='text', flex: false}, - 'ftg-menu': {show: v==='menu', flex: false}, - 'ftg-fn': {show: v==='function', flex: false}, - 'ftg-collect': {show: v==='collect_input', flex: true}, - 'ftg-dynlist': {show: v==='dynamic_list', flex: true}, - 'ftg-submit': {show: v==='submit_form', flex: true}, + 'ftg-text': {show: v==='text', flex: false}, + 'ftg-menu': {show: v==='menu', flex: false}, + 'ftg-fn': {show: v==='function', flex: false}, + 'ftg-collect': {show: v==='collect_input', flex: true}, + 'ftg-dynlist': {show: v==='dynamic_list', flex: true}, + 'ftg-submit': {show: v==='submit_form', flex: true}, + 'ftg-foreach': {show: v==='collect_for_each', flex: true}, }; for (const [cls, cfg] of Object.entries(sections)) { const el = card.querySelector('.' + cls); @@ -3340,6 +3366,7 @@ function addFlowCard() { ' ' + ' ' + ' ' + + ' ' + ' ' + ' ' + ' ' + @@ -3397,6 +3424,19 @@ function addFlowCard() { '
' + ' ' + ' ' + + ' ' + ' ' + ' ' + '' diff --git a/public/index.php b/public/index.php index 0d4283e..a42d318 100644 --- a/public/index.php +++ b/public/index.php @@ -414,6 +414,13 @@ $routes = [ $flowSfGroups = $_POST['flow_sf_meta_group']?? []; $flowSfFnames = $_POST['flow_sf_filename'] ?? []; $flowSfCaps = $_POST['flow_sf_caption'] ?? []; + $flowFeSrcEps = $_POST['flow_fe_src_ep'] ?? []; + $flowFeUpEps = $_POST['flow_fe_up_ep'] ?? []; + $flowFeValFlds = $_POST['flow_fe_val_field'] ?? []; + $flowFeLblFlds = $_POST['flow_fe_lbl_field'] ?? []; + $flowFeHeaders = $_POST['flow_fe_header'] ?? []; + $flowFeQs = $_POST['flow_fe_question'] ?? []; + $flowFeSucTxts = $_POST['flow_fe_success'] ?? []; $flows = []; foreach ($flowKeys as $i => $fk) { @@ -465,6 +472,15 @@ $routes = [ $f['meta_group'] = trim($flowSfGroups[$i] ?? ''); $f['filename'] = trim($flowSfFnames[$i] ?? ''); $f['caption'] = trim($flowSfCaps[$i] ?? ''); + + } elseif ($ftype === 'collect_for_each') { + $f['source_endpoint_key'] = trim($flowFeSrcEps[$i] ?? ''); + $f['endpoint_key'] = trim($flowFeUpEps[$i] ?? ''); + $f['value_field'] = trim($flowFeValFlds[$i] ?? 'id'); + $f['label_field'] = trim($flowFeLblFlds[$i] ?? 'nombre'); + $f['header'] = trim($flowFeHeaders[$i] ?? ''); + $f['question'] = trim($flowFeQs[$i] ?? ''); + $f['success_text'] = trim($flowFeSucTxts[$i] ?? ''); } $flows[$fk] = $f;