From 8f2e1b0cd128a81e2f351b8d5f6e2c323dee1ae0 Mon Sep 17 00:00:00 2001 From: fusionate Date: Mon, 23 Jan 2023 23:45:57 +0000 Subject: [PATCH] IVR Menu: Implement Enabled toggle control on Options. --- app/ivr_menus/app_config.php | 7 +++++ app/ivr_menus/app_defaults.php | 8 +++++ app/ivr_menus/ivr_menu_edit.php | 30 +++++++++++++++++-- .../scripts/configuration/ivr.conf.lua | 2 +- app/scripts/resources/scripts/ivr_menu.lua | 14 +++++++-- 5 files changed, 55 insertions(+), 6 deletions(-) diff --git a/app/ivr_menus/app_config.php b/app/ivr_menus/app_config.php index 69d3b3ec07..c010b39835 100644 --- a/app/ivr_menus/app_config.php +++ b/app/ivr_menus/app_config.php @@ -478,6 +478,13 @@ $apps[$x]['db'][$y]['fields'][$z]['type'] = "text"; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ""; $z++; + $apps[$x]['db'][$y]['fields'][$z]['name'] = "ivr_menu_option_enabled"; + $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "boolean"; + $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text"; + $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "text"; + $apps[$x]['db'][$y]['fields'][$z]['toggle'] = ['true','false']; + $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ""; + $z++; $apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date"; $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz'; $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date'; diff --git a/app/ivr_menus/app_defaults.php b/app/ivr_menus/app_defaults.php index 2438c76cb7..307bf9a9f4 100644 --- a/app/ivr_menus/app_defaults.php +++ b/app/ivr_menus/app_defaults.php @@ -83,6 +83,14 @@ if ($domains_processed == 1) { $ivr_menus = $database->select($sql, null, 'all'); unset($sql); + //enable existing ivr menu options by default + $sql = "update v_ivr_menu_options "; + $sql .= "set ivr_menu_option_enabled = true "; + $sql .= "where ivr_menu_option_enabled is null; "; + $database = new database; + $database->execute($sql, null); + unset($sql); + } ?> diff --git a/app/ivr_menus/ivr_menu_edit.php b/app/ivr_menus/ivr_menu_edit.php index 51e68eaf73..74146d151b 100644 --- a/app/ivr_menus/ivr_menu_edit.php +++ b/app/ivr_menus/ivr_menu_edit.php @@ -326,6 +326,7 @@ } $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_order"] = $row["ivr_menu_option_order"]; $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_description"] = $row["ivr_menu_option_description"]; + $array['ivr_menus'][0]["ivr_menu_options"][$y]["ivr_menu_option_enabled"] = $row['ivr_menu_option_enabled'] ?: 'false'; $y++; } } @@ -540,6 +541,7 @@ $ivr_menu_options[$id]['ivr_menu_option_param'] = ''; $ivr_menu_options[$id]['ivr_menu_option_order'] = ''; $ivr_menu_options[$id]['ivr_menu_option_description'] = ''; + $ivr_menu_options[$id]['ivr_menu_option_enabled'] = ''; $id++; } @@ -1031,6 +1033,7 @@ echo " ".$text['label-destination']."\n"; echo " ".$text['label-order']."\n"; echo " ".$text['label-description']."\n"; + echo " ".$text['label-enabled']."\n"; if ($show_option_delete && permission_exists('ivr_menu_option_delete')) { echo " \n"; echo " ".$text['label-delete']."\n"; @@ -1048,7 +1051,15 @@ } echo "\n"; - echo " \n"; + if (!is_uuid($field['ivr_menu_option_uuid'])) { // new record + if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') { + $onkeyup = "onkeyup=\"document.getElementById('ivr_menu_options_".$x."_ivr_menu_option_enabled').checked = (this.value != '' ? true : false);\""; // switch + } + else { + $onkeyup = "onkeyup=\"document.getElementById('ivr_menu_options_".$x."_ivr_menu_option_enabled').value = (this.value != '' ? true : false);\""; // select + } + } + echo " \n"; echo "\n"; echo "\n"; @@ -1081,7 +1092,22 @@ echo "\n"; echo " \n"; echo "\n"; - + echo "\n"; + // switch + if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') { + echo " \n"; + } + // select + else { + echo " \n"; + } + echo "\n"; if ($show_option_delete && permission_exists('ivr_menu_option_delete')) { if (is_uuid($field['ivr_menu_option_uuid'])) { echo ""; diff --git a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua index 3dff16098d..6203d45064 100644 --- a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua +++ b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua @@ -266,7 +266,7 @@ table.insert(xml, [[ >]]); --get the ivr menu options - local sql = [[SELECT * FROM v_ivr_menu_options WHERE ivr_menu_uuid = :ivr_menu_uuid ORDER BY ivr_menu_option_order asc ]]; + local sql = [[ SELECT * FROM v_ivr_menu_options WHERE ivr_menu_uuid = :ivr_menu_uuid AND ivr_menu_option_enabled = 'true' ORDER BY ivr_menu_option_order asc ]]; local params = {ivr_menu_uuid = ivr_menu_uuid}; if (debug["sql"]) then freeswitch.consoleLog("notice", "[ivr_menu] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); diff --git a/app/scripts/resources/scripts/ivr_menu.lua b/app/scripts/resources/scripts/ivr_menu.lua index 21fc8f38e9..da191d0938 100644 --- a/app/scripts/resources/scripts/ivr_menu.lua +++ b/app/scripts/resources/scripts/ivr_menu.lua @@ -332,9 +332,17 @@ end --get the ivr menu options - local sql = "SELECT * FROM v_ivr_menu_options " - .. "WHERE ivr_menu_uuid = :ivr_menu_uuid " - .. "ORDER BY ivr_menu_option_order asc "; + local sql = [[ + SELECT + * + FROM + v_ivr_menu_options + WHERE + ivr_menu_uuid = :ivr_menu_uuid + AND ivr_menu_option_enabled = 'true' + ORDER BY + ivr_menu_option_order asc + ]]; local params = {ivr_menu_uuid = ivr_menu_uuid}; if (debug["sql"]) then log.notice("SQL: " .. sql .. "; params: " .. json.encode(params));