From 5841beaa2497deb08ab6c61edce8f2718e108667 Mon Sep 17 00:00:00 2001 From: Alex <40072887+alexdcrane@users.noreply.github.com> Date: Fri, 16 Jan 2026 13:38:29 -0700 Subject: [PATCH] Call Center Active: Add agent status filter (#7702) * Call Center Active: Add agent status filter dropdown * Update call_center_active_inc.php * Update app_languages.php * Update call_center_active.php --- app/call_center_active/app_languages.php | 135 +++++++++++++++++- app/call_center_active/call_center_active.php | 52 ++++++- .../call_center_active_inc.php | 13 +- 3 files changed, 185 insertions(+), 15 deletions(-) diff --git a/app/call_center_active/app_languages.php b/app/call_center_active/app_languages.php index 805ddeaa5d..490a0101f4 100644 --- a/app/call_center_active/app_languages.php +++ b/app/call_center_active/app_languages.php @@ -1188,4 +1188,137 @@ $text['description-active_call_center']['zh-cn'] = "从下面的列表中选择 $text['description-active_call_center']['ja-jp'] = "以下のリストからコール センター キューを選択して、そのアクティビティを表示します。"; $text['description-active_call_center']['ko-kr'] = "활동을 보려면 아래 목록에서 콜 센터 대기열을 선택하십시오."; -?> +$text['label-available']['en-us'] = "Available"; +$text['label-available']['en-gb'] = "Available"; +$text['label-available']['ar-eg'] = "متوفر"; +$text['label-available']['de-at'] = "Verfügbar"; +$text['label-available']['de-ch'] = "Verfügbar"; +$text['label-available']['de-de'] = "Verfügbar"; +$text['label-available']['el-gr'] = "Διαθέσιμο"; +$text['label-available']['es-cl'] = "Disponible"; +$text['label-available']['es-mx'] = "Disponible"; +$text['label-available']['fr-ca'] = "Disponible"; +$text['label-available']['fr-fr'] = "Disponible"; +$text['label-available']['he-il'] = "זמין"; +$text['label-available']['it-it'] = "Disponibile"; +$text['label-available']['ka-ge'] = "ხელმានია"; +$text['label-available']['nl-nl'] = "Beschikbaar"; +$text['label-available']['pl-pl'] = "Dostępny"; +$text['label-available']['pt-br'] = "Disponível"; +$text['label-available']['pt-pt'] = "Disponível"; +$text['label-available']['ro-ro'] = "Disponibil"; +$text['label-available']['ru-ru'] = "Доступно"; +$text['label-available']['sv-se'] = "Tillgänglig"; +$text['label-available']['uk-ua'] = "Доступний"; +$text['label-available']['tr-tr'] = "Kullanılabilir"; +$text['label-available']['zh-cn'] = "可用"; +$text['label-available']['ja-jp'] = "利用可能"; +$text['label-available']['ko-kr'] = "사용 가능"; + +$text['label-available_on_demand']['en-us'] = "Available (On Demand)"; +$text['label-available_on_demand']['en-gb'] = "Available (On Demand)"; +$text['label-available_on_demand']['ar-eg'] = "متوفر (عند الطلب)"; +$text['label-available_on_demand']['de-at'] = "Verfügbar (auf Anfrage)"; +$text['label-available_on_demand']['de-ch'] = "Verfügbar (auf Anfrage)"; +$text['label-available_on_demand']['de-de'] = "Verfügbar (auf Anfrage)"; +$text['label-available_on_demand']['el-gr'] = "Διαθέσιμο (κατά πρότυπο)"; +$text['label-available_on_demand']['es-cl'] = "Disponible (A petición)"; +$text['label-available_on_demand']['es-mx'] = "Disponible (A petición)"; +$text['label-available_on_demand']['fr-ca'] = "Disponible (À la demande)"; +$text['label-available_on_demand']['fr-fr'] = "Disponible (À la demande)"; +$text['label-available_on_demand']['he-il'] = "זמין (לפי בקשה)"; +$text['label-available_on_demand']['it-it'] = "Disponibile (su richiesta)"; +$text['label-available_on_demand']['ka-ge'] = "ხელმასնიანი (შეკვეთის ფუძის)" ; +$text['label-available_on_demand']['nl-nl'] = "Beschikbaar (op aanvraag)"; +$text['label-available_on_demand']['pl-pl'] = "Dostępny (na żądanie)"; +$text['label-available_on_demand']['pt-br'] = "Disponível (Sob Demanda)"; +$text['label-available_on_demand']['pt-pt'] = "Disponível (Por Pedido)"; +$text['label-available_on_demand']['ro-ro'] = "Disponibil (Pe Cerere)"; +$text['label-available_on_demand']['ru-ru'] = "Доступно (по запросу)"; +$text['label-available_on_demand']['sv-se'] = "Tillgänglig (på begäran)"; +$text['label-available_on_demand']['uk-ua'] = "Доступний (за запитом)"; +$text['label-available_on_demand']['tr-tr'] = "İsteğe Göre Kullanılabilir"; +$text['label-available_on_demand']['zh-cn'] = "按需可用"; +$text['label-available_on_demand']['ja-jp'] = "需要時に利用可能"; +$text['label-available_on_demand']['ko-kr'] = "요청 시 사용 가능"; + +$text['label-not_available']['en-us'] = "Not Available"; +$text['label-not_available']['en-gb'] = "Not Available"; +$text['label-not_available']['ar-eg'] = "غير متاح"; +$text['label-not_available']['de-at'] = "Nicht verfügbar"; +$text['label-not_available']['de-ch'] = "Nicht verfügbar"; +$text['label-not_available']['de-de'] = "Nicht verfügbar"; +$text['label-not_available']['el-gr'] = "Μη Διαθέσιμο"; +$text['label-not_available']['es-cl'] = "No disponible"; +$text['label-not_available']['es-mx'] = "No disponible"; +$text['label-not_available']['fr-ca'] = "Non disponible"; +$text['label-not_available']['fr-fr'] = "Non disponible"; +$text['label-not_available']['he-il'] = "לא זמין"; +$text['label-not_available']['it-it'] = "Non disponibile"; +$text['label-not_available']['ka-ge'] = "უხელმასწავლებელი"; +$text['label-not_available']['nl-nl'] = "Niet beschikbaar"; +$text['label-not_available']['pl-pl'] = "Niedostępny"; +$text['label-not_available']['pt-br'] = "Indisponível"; +$text['label-not_available']['pt-pt'] = "Indisponível"; +$text['label-not_available']['ro-ro'] = "Indisponibil"; +$text['label-not_available']['ru-ru'] = "Недоступно"; +$text['label-not_available']['sv-se'] = "Inte tillgänglig"; +$text['label-not_available']['uk-ua'] = "Недоступний"; +$text['label-not_available']['tr-tr'] = "Kullanılamıyor"; +$text['label-not_available']['zh-cn'] = "不可用"; +$text['label-not_available']['ja-jp'] = "利用できません"; +$text['label-not_available']['ko-kr'] = "사용 불가"; + +$text['label-on_break']['en-us'] = "On Break"; +$text['label-on_break']['en-gb'] = "On Break"; +$text['label-on_break']['ar-eg'] = "في الإسترخاء"; +$text['label-on_break']['de-at'] = "Pausa"; +$text['label-on_break']['de-ch'] = "Pause"; +$text['label-on_break']['de-de'] = "Pause"; +$text['label-on_break']['el-gr'] = "Παύση"; +$text['label-on_break']['es-cl'] = "En pausa"; +$text['label-on_break']['es-mx'] = "En pausa"; +$text['label-on_break']['fr-ca'] = "Pause"; +$text['label-on_break']['fr-fr'] = "Pause"; +$text['label-on_break']['he-il'] = "במנוחה"; +$text['label-on_break']['it-it'] = "In pausa"; +$text['label-on_break']['ka-ge'] = "კავშირება პაუზაში"; +$text['label-on_break']['nl-nl'] = "Pauze"; +$text['label-on_break']['pl-pl'] = "Na przerwie"; +$text['label-on_break']['pt-br'] = "Em pausa"; +$text['label-on_break']['pt-pt'] = "Em pausa"; +$text['label-on_break']['ro-ro'] = "În pauză"; +$text['label-on_break']['ru-ru'] = "Перерыв"; +$text['label-on_break']['sv-se'] = "Paus"; +$text['label-on_break']['uk-ua'] = "В паузі"; +$text['label-on_break']['tr-tr'] = "Mola"; +$text['label-on_break']['zh-cn'] = "休息中"; +$text['label-on_break']['ja-jp'] = "休憩中"; +$text['label-on_break']['ko-kr'] = "쉬는 시간"; + +$text['label-logged_out']['en-us'] = "Logged Out"; +$text['label-logged_out']['en-gb'] = "Logged Out"; +$text['label-logged_out']['ar-eg'] = "تسجيل خروج"; +$text['label-logged_out']['de-at'] = "Abgemeldet"; +$text['label-logged_out']['de-ch'] = "Abgemeldet"; +$text['label-logged_out']['de-de'] = "Abgemeldet"; +$text['label-logged_out']['el-gr'] = "Αποσυνδεδεμένος"; +$text['label-logged_out']['es-cl'] = "Desconectado"; +$text['label-logged_out']['es-mx'] = "Desconectado"; +$text['label-logged_out']['fr-ca'] = "Déconnecté"; +$text['label-logged_out']['fr-fr'] = "Déconnecté"; +$text['label-logged_out']['he-il'] = "התנתק"; +$text['label-logged_out']['it-it'] = "Disconnesso"; +$text['label-logged_out']['ka-ge'] = "გამოსვლილი"; +$text['label-logged_out']['nl-nl'] = "Afgemeld"; +$text['label-logged_out']['pl-pl'] = "Wylogowany"; +$text['label-logged_out']['pt-br'] = "Desconectado"; +$text['label-logged_out']['pt-pt'] = "Desconectado"; +$text['label-logged_out']['ro-ro'] = "Deconectat"; +$text['label-logged_out']['ru-ru'] = "Вышел из системы"; +$text['label-logged_out']['sv-se'] = "Utloggad"; +$text['label-logged_out']['uk-ua'] = "Вийшов з системи"; +$text['label-logged_out']['tr-tr'] = "Çıkış Yapıldı"; +$text['label-logged_out']['zh-cn'] = "已注销"; +$text['label-logged_out']['ja-jp'] = "ログアウト"; +$text['label-logged_out']['ko-kr'] = "로그아웃됨"; diff --git a/app/call_center_active/call_center_active.php b/app/call_center_active/call_center_active.php index dcc557e45d..b23a925045 100644 --- a/app/call_center_active/call_center_active.php +++ b/app/call_center_active/call_center_active.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2023 + Portions created by the Initial Developer are Copyright (C) 2008-2026 the Initial Developer. All Rights Reserved. Contributor(s): @@ -106,10 +106,31 @@ } }); }); + + //filter agent list based on status + document.querySelectorAll('tr[data-agent-status]').forEach(table_row => { + const filter = ''; + + if (filter === 'available' && !table_row.getAttribute('data-agent-status').includes('Available')) { + table_row.style.display = 'none'; + } + // else if (filter === 'on_demand' && !table_row.getAttribute('data-agent-status').includes('On Demand')) { + // table_row.style.display = 'none'; + // } + else if (filter === 'not_available' && table_row.getAttribute('data-agent-status').includes('Available')) { + table_row.style.display = 'none'; + } + else if (filter === 'on_break' && !table_row.getAttribute('data-agent-status').includes('On Break')) { + table_row.style.display = 'none'; + } + else if (filter === 'logged_out' && !table_row.getAttribute('data-agent-status').includes('Logged Out')) { + table_row.style.display = 'none'; + } + }); } var requestTime = function() { - var url = 'call_center_active_inc.php?queue_name=&name='; + var url = 'call_center_active_inc.php?queue_name=&name=&agent_status='; new loadXmlHttp(url, 'ajax_response'); \n"; + echo "
".$text['header-agents']."
\n"; + echo "
\n"; + echo "
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo $text['description-agents']."

\n"; + + //show the response echo "
\n"; echo "

"; //include the footer require_once "resources/footer.php"; - -?> diff --git a/app/call_center_active/call_center_active_inc.php b/app/call_center_active/call_center_active_inc.php index 70bf035fbe..17b622b6b6 100644 --- a/app/call_center_active/call_center_active_inc.php +++ b/app/call_center_active/call_center_active_inc.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2023 + Portions created by the Initial Developer are Copyright (C) 2008-2026 the Initial Developer. All Rights Reserved. Contributor(s): @@ -41,6 +41,7 @@ //get the queue uuid and set it as a variable $queue_uuid = $_GET['queue_name']; + $name = $_GET['name'] ?? null; //get the queues from the database if (empty($_SESSION['queues']) || !is_array($_SESSION['queues'])) { @@ -115,10 +116,6 @@ //get the agent list - //show the title - echo "".$text['header-agents']."
\n"; - echo $text['description-agents']."

\n"; - //send the event socket command and get the response //callcenter_config queue list tiers [queue_name] | $switch_command = 'callcenter_config queue list tiers '.$queue_extension."@".$_SESSION["domain_name"]; @@ -224,7 +221,7 @@ $talk_time = $agent_row['talk_time']; $ready_time = $agent_row['ready_time']; - //calcudate the length since status change and bridge end + //calcudate the length since status change and bridge end $last_status_change_length = time() - $last_status_change; $last_bridge_end_length = time() - $last_bridge_end; @@ -241,7 +238,7 @@ $list_row_url = "../call_centers/call_center_agent_edit.php?id=".$agent_uuid; } - echo "\n"; + echo "\n"; echo ""; if (permission_exists('call_center_agent_edit')) { echo "".escape($agent_name).""; @@ -400,5 +397,3 @@ echo "\n"; } - -?>