From 61f0db8294c950dbc9ac40d04df25a80f646f1a8 Mon Sep 17 00:00:00 2001 From: Nate Jones Date: Sat, 21 Mar 2015 23:55:20 +0000 Subject: [PATCH] Time Conditions: Change how preset destinations function (when a Preset is checked, the Alternate Destination is required and used, unless a Default Destination is selected, or a Destination is set on the individual Presets themselves. Interface also adjusts if Presets are NOT available. --- app/time_conditions/app_languages.php | 41 ++- app/time_conditions/time_condition_edit.php | 264 ++++++++++++-------- resources/switch.php | 33 +-- 3 files changed, 204 insertions(+), 134 deletions(-) diff --git a/app/time_conditions/app_languages.php b/app/time_conditions/app_languages.php index 5a6b3f0cf0..600064f09f 100644 --- a/app/time_conditions/app_languages.php +++ b/app/time_conditions/app_languages.php @@ -70,10 +70,10 @@ $text['description-template']['pt-pt'] = "Os templates oferecem uma lista condições temporais."; $text['description-template']['fr-fr'] = "Le modèle fourni une liste de présélection."; - $text['label-custom']['en-us'] = "Custom"; - $text['label-custom']['es-cl'] = "Costumbre"; - $text['label-custom']['pt-pt'] = "Personalizado"; - $text['label-custom']['fr-fr'] = "Coutume"; + $text['label-settings']['en-us'] = "Settings"; + $text['label-settings']['es-cl'] = "Ajustes"; + $text['label-settings']['pt-pt'] = "Definições"; + $text['label-settings']['fr-fr'] = "Paramètres"; $text['label-conditions']['en-us'] = "Conditions"; $text['label-conditions']['es-cl'] = "Condición"; @@ -90,10 +90,10 @@ $text['label-label']['pt-pt'] = "Etiqueta"; $text['label-label']['fr-fr'] = "étiquette"; - $text['description-conditions']['en-us'] = "Define custom conditions necessary to execute the destination selected above."; - $text['description-conditions']['es-cl'] = "Definir las condiciones personalizados necesarios para ejecutar el destino seleccionado anteriormente."; - $text['description-conditions']['pt-pt'] = "Definir condições personalizadas necessárias para executar o destino selecionado acima."; - $text['description-conditions']['fr-fr'] = "Définir les conditions nécessaires pour exécuter la destination sélectionnée ci-dessus personnalisés."; + $text['description-settings']['en-us'] = "Define custom conditions necessary to execute the destination selected above."; + $text['description-settings']['es-cl'] = "Definir las condiciones personalizados necesarios para ejecutar el destino seleccionado anteriormente."; + $text['description-settings']['pt-pt'] = "Definir condições personalizadas necessárias para executar o destino selecionado acima."; + $text['description-settings']['fr-fr'] = "Définir les conditions nécessaires pour exécuter la destination sélectionnée ci-dessus personnalisés."; $text['label-condition_parameter']['en-us'] = "Parameter"; $text['label-condition_parameter']['es-cl'] = "Parámetro"; @@ -115,10 +115,15 @@ $text['label-presets']['pt-pt'] = "Presets"; $text['label-presets']['fr-fr'] = "Présélections"; - $text['description-presets']['en-us'] = "Select pre-defined conditions, and the default destination for all checked. Click the preset name to further customize the conditions and/or destination for each."; - $text['description-presets']['es-cl'] = "Seleccione condiciones predefinidas, y el destino predeterminado para todos marcada. Haga clic en el nombre del preset para personalizar aún más las condiciones y / o destino de cada uno."; - $text['description-presets']['pt-pt'] = "Selecione as condições pré-definidas, e o destino padrão para todos marcada. Clique no nome da predefinição para personalizar ainda mais as condições e / ou destino para cada um."; - $text['description-presets']['fr-fr'] = "Sélectionnez les conditions pré-définies, et la destination par défaut pour tous les bagages. Cliquez sur le nom de la présélection pour personnaliser davantage les conditions et / ou pour chaque destination."; + $text['description-presets']['en-us'] = "Select from available presets. Click a preset name to further customize the conditions and/or destination of each."; + $text['description-presets']['es-cl'] = "Choisissez parmi préréglages disponibles. Cliquez sur un nom prédéfini pour personnaliser davantage les conditions et/ou la destination de chacun."; + $text['description-presets']['pt-pt'] = "Selecione a partir de predefinições disponíveis. Clique em um nome pré-definido para personalizar ainda mais as condições e/ou destino de cada um."; + $text['description-presets']['fr-fr'] = "Choisissez parmi préréglages disponibles. Cliquez sur un nom prédéfini pour personnaliser davantage les conditions et/ou la destination de chacun."; + + $text['description-presets_advanced']['en-us'] = "Select a Default Destination above to be applied to each preset checked (without a destination already defined)."; + $text['description-presets_advanced']['es-cl'] = "Seleccione un destino predeterminado por encima de ser apliqué para cada preset facturado (sin destino ya definido)."; + $text['description-presets_advanced']['pt-pt'] = "Selecione um destino padrão acima para ser aplicado para cada predefinição marcada (sem um destino já definido)."; + $text['description-presets_advanced']['fr-fr'] = "Sélectionnez une destination par défaut ci-dessus pour être appliqué pour chaque preset vérifié (sans destination déjà défini)."; $text['label-preset_new_years_day']['en-us'] = "New Year's Day"; $text['label-preset_new_years_day']['es-cl'] = "Año Nuevo"; @@ -255,6 +260,11 @@ $text['label-select_destination']['pt-pt'] = "Selecione um Destino"; $text['label-select_destination']['fr-fr'] = "Choisissez une Destination"; + $text['label-select_default_destination']['en-us'] = "Select Default Destination"; + $text['label-select_default_destination']['es-cl'] = "Seleccionar Destino Predeterminado"; + $text['label-select_default_destination']['pt-pt'] = "Selecione Padrão Destino"; + $text['label-select_default_destination']['fr-fr'] = "Sélectionnez Par défaut Destinations"; + $text['label-alternate-destination']['en-us'] = "Alternate Destination"; $text['label-alternate-destination']['es-cl'] = "Destino Alternativo"; $text['label-alternate-destination']['pt-pt'] = "Destino Alternativo"; @@ -300,6 +310,11 @@ $text['message-update']['pt-pt'] = "Actualização Efectuada"; $text['message-update']['fr-fr'] = "Mis à jour"; + $text['message-alternate_destination_required']['en-us'] = "Alternate Destination Required"; + $text['message-alternate_destination_required']['es-cl'] = "Destino Alternativo Requerido"; + $text['message-alternate_destination_required']['pt-pt'] = "Destino Alternativo Obrigatório"; + $text['message-alternate_destination_required']['fr-fr'] = "Autre Destination Requise"; + $text['message-add']['en-us'] = "Add Complete"; $text['message-add']['es-cl'] = "Agregar Completado"; $text['message-add']['fr-fr'] = "Ajouté"; @@ -313,5 +328,5 @@ $text['message-delete']['en-us'] = "Delete Completed"; $text['message-delete']['es-cl'] = "Eliminar Completado"; $text['message-delete']['pt-pt'] = "Apagar Concluído"; - $text['message-delete']['fr-fr'] = "Supprimer Terminé"; + $text['message-delete']['fr-fr'] = "Supprimer Terminé" ?> \ No newline at end of file diff --git a/app/time_conditions/time_condition_edit.php b/app/time_conditions/time_condition_edit.php index 4fdca15879..84a791fcec 100644 --- a/app/time_conditions/time_condition_edit.php +++ b/app/time_conditions/time_condition_edit.php @@ -204,9 +204,12 @@ require_once "resources/header.php"; } } - //remove groups where an action (or default_preset_action, if a preset group) isn't defined + //remove groups where an action (or default_preset_action - if a preset group - or dialplan_anti_action) isn't defined foreach ($_REQUEST['variable'] as $group_id => $meh) { - if ( (in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '' && $_REQUEST['default_preset_action'] == '') || (!in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '') ) { + if ( + (in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '' && $_REQUEST['default_preset_action'] == '' && $_REQUEST['dialplan_anti_action'] == '') || + (!in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '') + ) { unset($_REQUEST['variable'][$group_id]); unset($_REQUEST['value'][$group_id]); unset($_REQUEST['dialplan_action'][$group_id]); @@ -303,7 +306,12 @@ require_once "resources/header.php"; $dialplan_action = check_str($_REQUEST["dialplan_action"][$group_id]); if ($dialplan_action == '') { if ($is_preset) { - $dialplan_action = check_str($_REQUEST['default_preset_action']); + if (check_str($_REQUEST['default_preset_action']) != '') { + $dialplan_action = check_str($_REQUEST['default_preset_action']); + } + else if (check_str($_REQUEST['dialplan_anti_action']) != '') { + $dialplan_action = check_str($_REQUEST['dialplan_anti_action']); + } } } @@ -490,19 +498,21 @@ require_once "resources/header.php"; } } - //loop through available presets - foreach ($available_presets as $preset_number => $preset) { - foreach ($preset as $preset_name => $preset_variables) { - //loop through each condition group - foreach ($current_conditions as $group_id => $condition_variables) { - $matches = 0; - foreach ($condition_variables as $condition_variable_name => $condition_variable_value) { - //count matching variable values - if ($preset_variables[$condition_variable_name] == $condition_variable_value) { $matches++; } - } - //if all preset variables found, then condition is a preset - if ($matches == sizeof($preset_variables)) { - $current_presets[$preset_number] = $group_id; + //loop through available presets (if any) + if (isset($available_presets) && sizeof($available_presets) > 0) { + foreach ($available_presets as $preset_number => $preset) { + foreach ($preset as $preset_name => $preset_variables) { + //loop through each condition group + foreach ($current_conditions as $group_id => $condition_variables) { + $matches = 0; + foreach ($condition_variables as $condition_variable_name => $condition_variable_value) { + //count matching variable values + if ($preset_variables[$condition_variable_name] == $condition_variable_value) { $matches++; } + } + //if all preset variables found, then condition is a preset + if ($matches == sizeof($preset_variables)) { + $current_presets[$preset_number] = $group_id; + } } } } @@ -712,10 +722,50 @@ require_once "resources/header.php"; obj.parentNode.removeChild(obj); } + function alternate_destination_required() { + require_default_or_alt_destination = false; + $meh) { ?> + if (document.getElementById('preset_').checked) { + preset_group_id = document.getElementById('preset_').value; + preset_destination = $('#dialplan_action_' + preset_group_id).val(); + if (preset_destination == '') { require_default_or_alt_destination = true; } + } + + + if (require_default_or_alt_destination && $('#default_preset_action').val() == '') { + $('#td_alt_dest').attr('class', 'vncellreq'); + return true; + } + else { + $('#td_alt_dest').attr('class', 'vncell'); + return false; + } + } + + function check_submit() { + 0) { + ?> + if (alternate_destination_required() && $('#dialplan_anti_action').val() == '') { + display_message("", 'negative', 3000); + return false; + } + else { + return true; + } + + } + \n"; +echo "
\n"; echo "\n"; echo " \n"; @@ -765,7 +815,7 @@ function add_custom_condition($group_id, $dialplan_action = '') { global $text, $v_link_label_add; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } @@ -823,7 +873,7 @@ if ($action == 'update') { } } -// add first/new set of custom condition fields +//add first/new set of custom condition fields if ($action != 'update' || ($action == 'update' && $largest_group_id == 0)) { $group_id = 500; } @@ -838,107 +888,107 @@ if ($action == 'update') { } echo ""; -echo "\n"; -echo "\n"; -echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; } -} - -echo "
\n"; -echo "
\n"; - echo " ".$text['label-custom']; + echo " ".$text['label-settings']; echo "\n"; echo " \n"; @@ -785,7 +835,7 @@ function add_custom_condition($group_id, $dialplan_action = '') { echo " "; echo "
"; echo "
"; - echo " ".$text['description-conditions']; + echo " ".$text['description-settings']; echo "
\n"; -echo " ".$text['label-presets']."\n"; -echo "\n"; +//if presets exist, show the preset section + if (isset($available_presets) && sizeof($available_presets) > 0) { + echo "
\n"; + echo " ".$text['label-presets']."\n"; + echo "\n"; -foreach ($available_presets as $preset_number => $preset) { - foreach ($preset as $preset_name => $preset_variables) { - $checked = (is_array($current_presets) && $current_presets[$preset_number] != '') ? "checked='checked'" : null; - if ($checked) { - $preset_group_id = $current_presets[$preset_number]; + foreach ($available_presets as $preset_number => $preset) { + foreach ($preset as $preset_name => $preset_variables) { + $checked = (is_array($current_presets) && $current_presets[$preset_number] != '') ? "checked='checked'" : null; + $preset_group_id = ($checked) ? $current_presets[$preset_number] : $preset_group_id = $preset_number * 5 + 100; + echo " ".$text['label-preset_'.$preset_name]."
\n"; + echo ""; + if ($action == 'update' && is_array($current_presets) && $current_presets[$preset_number] != '') { + //add (potentially customized) preset conditions and populate + foreach ($current_conditions[$preset_group_id] as $cond_var => $cond_val) { + $range_indicator = ($cond_var == 'date-time') ? '~' : '-'; + $tmp = explode($range_indicator, $cond_val); + $cond_val_start = $tmp[0]; + $cond_val_stop = $tmp[1]; + unset($tmp); + echo ""; + } + } + else { + //add default preset conditions and populate + foreach ($preset_variables as $preset_variable => $preset_value) { + $range_indicator = ($preset_variable == 'date-time') ? '~' : '-'; + $tmp = explode($range_indicator, $preset_value); + $preset_value_start = $tmp[0]; + $preset_value_stop = $tmp[1]; + unset($tmp); + echo "\n\n"; + } + } + } } - else { - $preset_group_id = $preset_number * 5 + 100; - } - echo " ".$text['label-preset_'.$preset_name]."
\n"; - echo ""; - if ($action == 'update' && is_array($current_presets) && $current_presets[$preset_number] != '') { - //add (potentially customized) preset conditions and populate - foreach ($current_conditions[$preset_group_id] as $cond_var => $cond_val) { - $range_indicator = ($cond_var == 'date-time') ? '~' : '-'; - $tmp = explode($range_indicator, $cond_val); - $cond_val_start = $tmp[0]; - $cond_val_stop = $tmp[1]; - unset($tmp); - echo ""; - } - } - else { - //add default preset conditions and populate - foreach ($preset_variables as $preset_variable => $preset_value) { - $range_indicator = ($preset_variable == 'date-time') ? '~' : '-'; - $tmp = explode($range_indicator, $preset_value); - $preset_value_start = $tmp[0]; - $preset_value_stop = $tmp[1]; - unset($tmp); - echo "\n\n"; - } - } + echo " ".$text['description-presets']."
\n"; + echo "
\n"; -echo " "; -echo " "; -echo " "; -echo "
"; - switch_select_destination("dialplan", $text['label-select_destination'], "default_preset_action", $dialplan_action, 'width: 300px;', ''); -echo "
"; -echo "
"; -echo " ".$text['description-presets']."
\n"; -echo "\n"; -echo "\n"; echo "\n"; -echo "\n"; +echo "\n"; echo " ".$text['label-alternate-destination']."\n"; echo "\n"; echo "\n"; switch_select_destination("dialplan", ' ', "dialplan_anti_action", $dialplan_anti_action, 'width: 300px;', ''); -echo "
\n"; echo "\n"; echo "\n"; diff --git a/resources/switch.php b/resources/switch.php index c087219075..328488181d 100644 --- a/resources/switch.php +++ b/resources/switch.php @@ -392,7 +392,7 @@ function ListFiles($dir) { } } -function switch_select_destination($select_type, $select_label, $select_name, $select_value, $select_style, $action='') { +function switch_select_destination($select_type, $select_label, $select_name, $select_value, $select_style, $action='', $onchange='') { //select_type can be ivr, dialplan, call_center_contact or bridge global $text, $config, $db, $domain_uuid; @@ -411,6 +411,10 @@ function switch_select_destination($select_type, $select_label, $select_name, $s echo " tb.className='formfld';\n"; echo " tb.setAttribute('id', '".$select_id."');\n"; echo " tb.setAttribute('style', '".$select_style."');\n"; + if ($onchange != '') { + echo " tb.setAttribute('onchange', \"".$onchange."\");\n"; + echo " tb.setAttribute('onkeyup', \"".$onchange."\");\n"; + } echo " tb.value=obj.options[obj.selectedIndex].value;\n"; echo " document.getElementById('btn_select_to_input_".$select_id."').style.visibility = 'hidden';\n"; echo " tbb=document.createElement('INPUT');\n"; @@ -431,6 +435,9 @@ function switch_select_destination($select_type, $select_label, $select_name, $s echo " obj[0].parentNode.removeChild(obj[1]);\n"; echo " obj[0].parentNode.removeChild(obj[2]);\n"; echo " document.getElementById('btn_select_to_input_".$select_id."').style.visibility = 'visible';\n"; + if ($onchange != '') { + echo " ".$onchange.";\n"; + } echo "}\n"; echo "\n"; echo "\n"; @@ -439,21 +446,19 @@ function switch_select_destination($select_type, $select_label, $select_name, $s //default selection found to false $selection_found = false; - echo " \n"; //display a default select label (specified explicitly or from the language file) if no selected value is passed in - if ($select_value == '') { - if ($select_label != '') { - $options[] = ""; - $options[] = ""; - } - else if ($select_label == '' && $text['label-select_destination'] != '') { - $options[] = ""; - $options[] = ""; - } - else { - $options[] = ""; - } + if ($select_value == '' && $select_label != '' && $select_label != ' ') { + $options[] = ""; + $options[] = ""; + } + else if ($select_value == '' && $select_label == '' && $text['label-select_destination'] != '') { + $options[] = ""; + $options[] = ""; + } + else { + $options[] = ""; } //call center queues